Integration

Last updated last month

Connect the app's miles® SDK to all of your app's features to start driving your users and build retention.

Xamarin Integration

Work In Progress

🚩 You have the app's miles banner up and running.

Now you need to integrate the SDK deeper into your application so that your user can: - 🧠understand how the program works. - 🔎discover all the functionalities that you slaved away at developing ! - 🥕be rewarded for consistently using your application's main features.

I. Connection

1. Onboarding

Skip to the Connect section if you intend to have everyone participate in the program by default

Purpose

The first thing that the user will see when clicking on the app's miles banner is the onboarding.

This onboarding has two purposes:

  • 🎓 Present and explain the program

  • Ask the user their consent to take part in the program

Onboarding choices

There are up to 3 buttons on the onboarding, and you must attach a listener in order to redirect the user depending on their input.

The input of the user will affect the variable OPT_IN in the following way: (default: APM_DEVICE_OPT_IN_NOT_SET)

  • 👍 OK: APM_DEVICE_OPT_IN_ACCEPT

  • Later: APM_DEVICE_OPT_IN_NOT_SET

  • 👎 Never: APM_DEVICE_OPT_IN_REFUSE

Example with MainPage

public partial class MainPage : ContentPage
{
//Declare a object of APMOnboardingUtils in your class
private APMOnboardingUtils mOnboardingUtils;
public MainPage()
{
InitializeComponent();
APM.RefreshSDK();
mOnboardingUtils = new APMOnboardingUtils(delegate () {
Debug.WriteLine("APMOnboardingUtils.OK");
// User clicked "OK" -> "I want to participate".
// TODO: If user not connected, redirect to login/create-account page.
// Nothing to do if user connected
if (clientAccountConnected) //TODO: check if account client is connected
{
//Account client is connected
Dictionary<string, object> user = APM.GetUser();
if (user != null && user["userToken"] != null && !user["userToken"].Equals(""))
{
//Client account connected and app's miles account connected
Debug.WriteLine("Client account connected and app's miles account connected");
}
else
{
//Client account connected --> need to connect app's miles account
Debug.WriteLine("Client account connected --> need to connect app's miles account");
//ApmConnection();
}
}
else
{
//TODO: show screen login/create account
}
}, delegate () {
Debug.WriteLine("APMOnboardingUtils.Later");
// User clicked "Later" -> "I'll decide later".
// The SDK will continue showing the onboarding when clicking the banner
// Nothing to do here in general
}, delegate () {
Debug.WriteLine("APMOnboardingUtils.Never");
// User clicked "Never" => "Stop asking me, hide the banner"
// Note: The user may change his mind, and it is recommended to have a button
// that allows the user to get back in the program
// TODO: (Optional) You can redirect to the page with that "Get back in the program" button
// (with a little message saying "You can always change your mind by clicking this button")
});
//Listen events of onboarding
mOnboardingUtils.RegisterNotifications();
}
}

Call unregister when the screen is in pause:

//Unlisten events of onboarding
mOnboardingUtils.unregister(this);

2. Connect

In order to offer a seamless experience, app's miles doesn't have a login or create-account page. The login/create-account process for app's miles is parallel to yours.

APMUIServicesUser.UserClientConnect()

This method can both connect and create an account:

  • If an app's miles account already exists with the given userID, the method signs them in.

  • If no account exists, the method will automatically create their account and sign them in.

This method needs : « email », « userID » and « optIn » « email » is the email of user « userID » is a unique identifier in your database – « optIn » is the RGPD OptIn

If you don’t want give the email, you can build a encrypted email with the userID: {userID}@{your-company-name}.com (e.g. 123456789@appsmiles.fr)

string userID = "demo-test";
string email = partnerClientId + "@demo.com";
int optIn = APMServicesConfig.APM_DEVICE_OPT_IN_ACCEPT();
APMUIServicesUser.UserClientConnect(email, userID, optIn, delegate (Dictionary<string, Object> user) {
Debug.WriteLine("user.email : " + user["email"]);
}, delegate (Dictionary<string, Object> error) {
Debug.WriteLine("error.errorCode : " + error["errorCode"]);
Debug.WriteLine("error.errorMsg : " + error["errorMsg"]);
});

3. Logout

The same way the login process is parallel to yours, so is the logout.

II. Tagging plan

1. Send an action

In order to reward the user for an action, you need to place triggers in your application. You will need to follow the Tagging plan that your marketing team created with us.

Be careful with the spelling, an extra character like a 's' will change the tag

Call the method triggerAction to send a tag

APM.TriggerAction("challenge1"); //challenge1 → actionName

Make sure to test each action by looking at the logs, especially for actions that are complex

Earn animation

2. Actions with properties

3. User properties

III. Advanced functions

1. Show/Hide badge

If you want to hide the badge on some screens

APM.HideBadge();

Don’t forget to re-show badge after hiding

APM.ShowBadge();
Day ... Night ...

2. Activate debug logs

3. User listener