Intégration du SDK AppsFlyer - Unity

  • Annonceurs
  • Développeurs

Official_unity_logo.png

Current Unity SDK Version: v4.18.0
Compatible with Android SDK v4.8.18 and iOS SDK v4.8.10

1. Aperçu

Le SDK AppsFlyer comprend une fonctionnalité d'installation d'applications mobiles et de suivi d'événements pour Android, iOS, Windows Phone et de nombreuses autres plates-formes de développement mobiles.

Vous pouvez suivre les installations, les mises à jour, les sessions ainsi que les événements post-installation (y compris les achats in-app, les niveaux de jeu, etc.) pour évaluer le ROI et le niveau d'engagement des utilisateurs.

Les applications mobiles, développées sur la plate-forme Unity, peuvent intégrer le SDK AppsFlyer une fois et suivre les applications générées par Android et iOS. Le guide suivant indique la marche à suivre pour intégrer le SDK AppsFlyer dans votre code Unity pour vos applications iOS et Android.

 Remarque

AppsFlyer prend en charge l'intégration avec la version 5 et supérieure de Unity

 Important !

Le plug-in Unity v4.16.0 ainsi que les versions supérieures prennent en charge l'API du référent d'installation Google Play. Si vous souhaitez utiliser la nouvelle API du référent, passez à la version 4.16.0 ou supérieure du plug-in.

 Astuce

  • Chapters 2 and 3 are MANDATORY to implement BASIC SDK integration, i.e. install attribution only
  • Tracking in-app events chapter is HIGHLY RECOMMENDED to implement
  • L'implémentation des autres fonctionnalités décrites est OPTIONNELLE, bien que certaines d’entre elles puissent vous être utiles, en fonction de la logique commerciale de votre application. Par exemple, le suivi des revenus ou l'obtention des données de conversion au premier lancement peuvent être essentiels pour le flux de votre application.

2. Démarrage rapide

2.1 Téléchargement du plug-in Unity d'Appsflyer

Vous pouvez trouver le plug-in sur Github, en cliquant sur le lien suivant : https://github.com/AppsFlyerSDK/Unity

Les instructions d'intégration pour l'utilisation du plug-in Unity d'AppsFlyer sont présentées ci-dessous.

2.2 Installation du plug-in

Voici les instructions d'installation du plug-in d'AppsFlyer :

  1. Importez le fichier AppsFlyerUnityPlugin.unitypackage dans votre projet Unity.
  2. Allez sur Actifs >> Importer Package >> Package personnalisé
  3. Sélectionnez le fichier AppsFlyerUnityPlugin.unitypackage.

2.3 Configuration obligatoire pour Android et iOS

Configuration Android


Configuration du récepteur et des permissions AF dans le fichier AndroidManifest.xml :

<!-- receiver should be inside the <application> tag -->
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>
<!-- Mandatory permission: -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />


Configuration des permissions requises

Le fichier AndroidManifest.xml comprend la permission suivante :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


Configuration du récepteur de diffusion dans le fichier AndroidManifest.xml

Les deux options suivantes sont disponibles pour mettre en place le récepteur de diffusion du référent d'installation :

Utilisation d'un récepteur de diffusion unique Utilisation d'un récepteur de diffusion multiple

Si dans le fichier AndroidManifest.xml, aucun récepteur n'écoute dans INSTALL_REFERRER, ajoutez le récepteur suivant dans la balise de l'application :

<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
  <intent-filter>
     <action android:name="com.android.vending.INSTALL_REFERRER" />
   </intent-filter>
</receiver>

Configuration iOS


Cadres et bibliothèques associés


After building the project in Unity for xCode, you must add Security.Framework to xCode's Linked Frameworks and Libraries if the framework was not added previously.


Apple Search Ads iOS

Ajouter ce qui suit :

AdSupport.framework
AppsFlyer collecte l'IDFA uniquement si vous incluez ce cadre. Ne pas ajouter ce cadre signifie que vous ne pouvez pas suivre Facebook, Twitter et la plupart des autres réseaux publicitaires.
iAd.framework

Ajouter ce cadre à votre projet d’application est fortement recommandé, car il est obligatoire pour le suivi d'Apple Search Ads.

3. Initialisation du SDK

In your Start / Init methods you set the AppsFlyer dev key and the unique app IDs used by iTunes and Google Play. Note that you need to set the iOS app ID here with digits only, without the "id" prefix.

Ajoutez le code suivant :

Unity Plugin 4.15.1 et ultérieur Unity Plugin 4.14.3 et antérieur
void Start () {
/* Mandatory - set your AppsFlyer’s Developer key. */
AppsFlyer.setAppsFlyerKey ("YOUR_APPSFLYER_DEV_KEY");
/* For detailed logging */
/* AppsFlyer.setIsDebug (true); */
#if UNITY_IOS
  /* Mandatory - set your apple app ID
   NOTE: You should enter the number only and not the "ID" prefix */
  AppsFlyer.setAppID ("YOUR_APP_ID_HERE");
  AppsFlyer.trackAppLaunch ();
#elif UNITY_ANDROID
  /* Mandatory - set your Android package name */
  AppsFlyer.setAppID ("YOUR_ANDROID_PACKAGE_NAME_HERE");
  /* For getting the conversion data in Android, you need to add the "AppsFlyerTrackerCallbacks" listener.*/
  AppsFlyer.init ("YOUR_APPSFLYER_DEV_KEY","AppsFlyerTrackerCallbacks");
#endif
}

 Important !

  • Pour Android, AppsFlyer.init comprend l'appel à la méthode trackAppLaunch. Par conséquent, n'appelez pas la méthode trackAppLaunch dans la construction Android du plug-in Unity.
  • Dans iOS, la réponse de données de conversion est déclenchée dans la classe AppsFlyerTrackerCallbacks.cs.

4. Suivi des évènements In-App

Les évènements In-App permettent une analyse de ce qui se passe dans votre application. Il est recommandé de prendre le temps de définir les évènements que vous voulez mesurer pour vous permettre de suivre le ROI (Return On Investment) et la LTV (Lifetime Value).

Tracking in-app events is performed by calling trackRichEvent with event name and value parameters. See In-App Events documentation for more details.

 Remarque

Le nom d’un évènement In-App ne doit pas dépasser 45 caractères. Les noms d’évènements dépassant 45 caractères n’apparaissent pas dans le tableau de bord, mais seulement dans les API de données brutes, Push et Pull.


Exemple de suivi d’évènement :

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new  
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add ("af_currency", "USD");
purchaseEvent.Add ("af_revenue", "0.99");
purchaseEvent.Add ("af_quantity", "1");
AppsFlyer.trackRichEvent ("af_purchase", purchaseEvent);

 Remarque

AppsFlyer prend en charge les caractères non anglais dans les évènements in-app ou toute autre API SDK, en commençant par le SDK Unity version 4.15.1.

5. Suivi du Deep Linking

Pour le Deep Linking, suivez les instructions selon votre système d’exploitation.

Android iOS
Ajoutez la ligne suivante à votre fichier manifeste :

<activity android:name="com.appsflyer.GetDeepLinkingActivity" android:exported="true">
 <intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="your_scheme" />
 </intent-filter>
</activity>

Pour recevoir vos données de deep linking, vous devez implémenter le callback onAppOpenAttribution (figurant dans la classe AppsFlyerTrackerCallbacks) appelé par le SDK AppsFlyer. Il renvoie les paramètres Onelink/de suivi utilisés pour déclencher l'ouverture de l'application. Vous pouvez ensuite analyser les valeurs et appliquer la logique pour déclencher la page appropriée de l'application.

public void onAppOpenAttribution(string validateResult) {
	print ("AppsFlyerTrackerCallbacks:: got onAppOpenAttribution = " + validateResult);
}

6. Suivi des revenus

Use the AFInAppEvents.REVENUE event parameter to count revenue as part of an in-app event. You can populate it with any numeric value, positive or negative.

 Remarque

AFInAppEvents.REVENUE  (équivalent à l’utilisation d’af_revenue) est le seul paramètre d’événement qui est compté sur AppsFlyer comme un revenu réel dans les données brutes et le tableau de bord. Pour plus de détails, veuillez cliquer ici.

 Exemple :

Évènement In-App de revenu
AppsFlyer.trackRichEvent(AFInAppEvents.LEVEL_ACHIEVED, new Dictionary<string, string>(){
	{AFInAppEvents.CONTENT_ID, "1234567"},
	{AFInAppEvents.CONTENT_TYPE, "category_a"},
	{AFInAppEvents.REVENUE, "1.99"},
	{AFInAppEvents.CURRENCY, "USD"}
});

 Important !

Veillez à ne PAS formater la valeur de revenu. Elle ne doit pas contenir de séparateurs sous forme de virgules, de symbole monétaire ou de texte. Un événement de revenu doit être similaire à 1234.56, par exemple.

Suivi des revenus négatifs

Si vous devez effectuer le suivi de revenus négatifs, par exemple lorsqu'un utilisateur annule un achat ou reçoit un remboursement, vous pouvez envoyer un revenu négatif.

AppsFlyer.trackRichEvent(AFInAppEvents.LEVEL_ACHIEVED, new Dictionary<string, string>(){
	{AFInAppEvents.CONTENT_ID, "1234567"},
	{AFInAppEvents.CONTENT_TYPE, "category_a"},
	{AFInAppEvents.REVENUE, "-1.99"},
	{AFInAppEvents.CURRENCY, "USD"}
});

 Remarque

Veuillez remarquer les éléments suivants dans le code ci-dessus :

  1. La valeur de revenu est précédée du signe moins
  2. Le nom de l'événement a la valeur unique "cancel_purchase" pour vous permettre d'identifier les événements de revenus négatifs dans le tableau de bord et les rapports de données brutes.

7. Obtenir les données de conversion

AppsFlyer vous permet d’accéder aux données de conversion d'utilisateur en temps réel, directement au niveau du SDK. Ceci vous permet de personnaliser la page d’atterrissage qu'utilisateur voit à la toute première ouverture de l'application suite à une nouvelle installation d'application.

Pour charger les données de conversion d'AppsFlyer depuis ses serveurs :

  1. Ajoutez un GameObject vide
  2. Attach to it the AppsFlyerTrackerCallbacks.cs which is included in the project (you must name this gameobject AppsFlyerTrackerCallbacks). 
Android Unity Plugin > 4.15.1 Android Unity Plugin < 4.14.3 iOS
/*Pour obtenir les données de conversion dans Android, vous devez ajouter ce port d’écoute à la méthode init()*/
AppsFlyer.init ("VOTRE_CLÉ_DÉV","AppsFlyerTrackerCallbacks");


Dans Android, vous pouvez déplacer les méthodes d’AppsFlyerTrackerCallbacks.cs vers une autre classe et appeler cette classe dans votre port d'écoute.

Vous devez utiliser exactement les mêmes espaces-noms de méthode que ceux qui apparaissent sur AppsFlyerTrackerCallbacks.

8. Identifiants utilisateur

Obtenez le DeviceID AppsFlyer

Le DeviceID unique d'AppsFlyer est créé pour chaque nouvelle installation d’une application. Utiliser l’API suivante pour obtenir l’ID unique AppsFlyer :

public String getAppsFlyerId();


Exemple d’utilisation :

string AppsFlyerUID = AppsFlyer.getAppsFlyerId();

Définir l'ID Utilisateur-Client

Set the User ID as used by the app.

Pour définir l’ID utilisateur, appelez la méthode suivante :

AppsFlyer.setCustomerUserID("someId");

 Remarque

The customerUserID SHOULD be set before the trackAppLaunch/init. It is recommended to set your Customer User ID as soon as possible as it is only associated to events reported after its setup. Customer User ID can also be used to complete integrations with Analytics platforms such as Mixpanel and Swrve.

 Important !

Pour iOS - Assurez-vous de définir l'ID utilisateur-client à chaque lancement de l'application, avant d'appeler la méthode trackAppLaunch.

Pour plus d’informations sur l’ID Utilisateur-Client,cliquez ici.

Définir l'E-mail Utilisateur

Actuellement indisponible dans Unity.

ID Google Advertising

AppsFlyer collecte automatiquement le google_advertising_id depuis la version 4.8.0 du SDK. L'obligation de collecte de l'ID Google Advertising s'applique uniquement aux versions 4.7.X et supérieures du SDK.

Numéro IMEI et ID Android

By default, IMEI and Android ID are not collected by the SDK if the OS version is higher than KitKat (4.4) and the device contains Google Play Services (on Unity SDK versions 4.16.4 and below the specific app needed GPS).

Afin d'envoyer explicitement ces ID à AppsFlyer, les développeurs peuvent utiliser les API suivantes :

AppsFlyer.setAndroidIdData(string)
AppsFlyer.setImeiData(string)

If the app does NOT contain Google Play Services, the IMEI and Android ID are collected by the SDK. However, apps with Google play services should avoid IMEI collection as this is in violation of the Google Play policy.

Les développeurs peuvent refuser de collecter le numéro IMEI et de l'ID Android en utilisant les API suivantes :

AppsFlyer.setCollectAndroidID(bool) 
AppsFlyer.setCollectIMEI(bool)

 Avertissement

Il est IMPÉRATIF de collecter au moins un identifiant d'appareil, l'identifiant publicitaire Google (GAID), l'ID Android, ou le numéro IMEI pour permettre une attribution correcte.

IDFA et IDFV

AppsFlyer recueille automatiquement l’IDFA (ID pour les annonceurs) et l'IDFV (ID pour les vendeurs) si AdSupport.framework est inclus dans l’application.

9. Fonctionnalités facultatives

Mesure des désinstallations

Pour la mesures des désinstallations, suivez les instructions en fonction de votre système d’exploitation.

Android - Firebase Android - GCM iOS
1. Download the Unity Firebase SDK from: https://firebase.google.com/docs/unity/setup.
2. Import FirebaseMessaging.unitypackage into the project.
3. Import google-services.json into the project (obtained in the Firebase console)

 Remarque

Les récepteurs de manifeste seront automatiquement ajoutés par le SDK Unity Firebase.


4. In the Unity class handling the AppsFlyer code, add the following:
avec Firebase.Messaging;
avec Firebase.Unity;

5. Add to the Start() method:
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;

6. Add the following method:
public void OnTokenReceived
  (object sender, Firebase.Messaging.TokenReceivedEventArgs token) { 
    AppsFlyer.updateServerUninstallToken (token.Token);
}

 Avertissement

Les utilisateurs qui implémentent le SDK Unity Firebase ne doivent pas ajouter l’appel de méthode suivant à enableUninstallTracking(“SenderID”) car le SDK Firebase obtiendra l’ID de l’expéditeur du fichier google-services.json que nous avons ajouté précédemment. Ajouter cette méthode pourrait causer un avertissement de débogage de la part d'Android.

Suivi des Notifications Push

AppsFlyer vous permet de mesurer les notifications push dans le cadre d'une campagne de retargeting.

handlePushNotification(Dictionary<string, string> payload)

La charge utile des données doit inclure un objet : af avec la chaîne clé-valeur pertinente :

Exemple :

{ 
  "data":{ 
   "score":"5x1",
   "time":"15:10",
   "af":{ 
     "c":"test_campaign",
     "is_retargeting":"true",
     "pid":"push_provider_int"
   }
  }
}

// with deep-linking
{
  "data":{
   "score":"5x1",
   "time":"15:10",
   "click_action":"com.example.someAction",
   "af":{
     "c":"test_campaign",
     "is_retargeting":"true",
     "pid":"push_provider_int"
   }
  }
}

 Remarque

Pour plus d'informations concernant la mesure des notifications push, veuillez lirececi.

Suivi des Promotions Croisées

AppsFlyer vous permet de suivre et d'attribuer les installations provenant d'une promotion croisée de l'une de vos applications au sein de l'application actuelle dont dispose l'utilisateur. Les applications de promotion croisée peuvent être un facteur de croissance important en entrainant des installations supplémentaires pour vos applications.

Pour obtenir plus d'informations, reportez-vous à l'article concernant le suivi de la promotion croisée, disponible ici.

Suivi des invitations utilisateur

AppsFlyer vous permet de suivre et d'attribuer les installations provenant d'invitations utilisateur au sein de votre application. Le fait de permettre à vos utilisateurs existants d'inviter leurs amis et contacts en tant que nouveaux utilisateurs de votre application peut être un facteur de croissance important pour votre application.

Pour obtenir plus d'informations, reportez-vous à l'article concernant le suivi des invitations utilisateur, disponible ici.

Configuration du Code Devise

Vous pouvez définir un code de devise global en utilisant l'API ci-dessous, en plus des codes de devise spécifiques pouvant être utilisés dans le cadre de chaque événement in-app envoyé à AppsFlyer. Le code de devise global est utilisé lorsque af_currency

AFInAppEvents.CURRENCY

n'est pas envoyé dans le cadre d'un évènement in-app.

La valeur par défaut est USD. Vous pouvez trouver les codes devise ISO acceptables ici.

Utilisez l'API suivante pour configurer le code de devise :

public void setCurrencyCode(String currencyCode);

Exemple d'utilisation :

setCurrencyCode(string currencyCode)

Validation des achats in-app

Pour la validation des reçus d'achat In-App, suivez les instructions en fonction de votre système d’exploitation.

Appel Android Appel du port d'écoute (Android uniquement) iOS
//Pour obtenir les calbacks
 //AppsFlyer.createValidateInAppListener ("AppsFlyerTrackerCallbacks", 
"onInAppBillingSuccess", "onInAppBillingFailure"); AppsFlyer.validateReceipt(string publicKey, string purchaseData,
string signature, string price, string currency, Dictionary additionalParameters);

La réponse d'achat validé est déclenchée dans la classe AppsFlyerTrackerCallbacks.cs

Anonymisation des données de l'utilisateur

AppsFlyer vous fournit une méthode permettant d'anonymiser des identifiants utilisateur spécifiques dans les analyses AppsFlyer. Cette méthode est conforme aux dernières exigences de confidentialité ainsi qu'aux politiques de confidentialité des données de Facebook. La valeur par défaut est NON, ce qui signifie qu'aucune anonymisation n'est effectuée par défaut.

Utilisez cette API lors de l'initialisation du SDK pour anonymiser explicitement les installations, les évènements et les sessions d'un utilisateur :

public void setDeviceTrackingDisabled(boolean isDisabled);

Exemple d'utilisation :

AppsFlyer.setDeviceTrackingDisabled(true);
Il est possible de reprendre le suivi en appelant de nouveau deviceTrackingDisabled défini sur false.

 Avertissement

Le fait d'exclure des utilisateurs nuit GRAVEMENT à vos informations d'attribution.
Utilisez cette option UNIQUEMENT pour les régions dans lesquelles vous êtes légalement tenu de ne pas collecter les informations de vos utilisateurs.

Personnalisation du temps entre les sessions

By default, at least 5 seconds must lapse between 2 app launches to count as separate 2 sessions (more about counting sessions).
However, you can use the following API to set your custom value for the minimum required time between sessions:
setMinTimeBetweenSessions(int seconds)


Exemple d'utilisation :

AppsFlyer.setMinTimeBetweenSessions(10);

Notez que définir une valeur élevée à la durée personnalisée entre les lancements peut avoir un impact négatif sur les API qui s'appuient sur les données de session, comme Deep Linking.

Sessions d'arrière-plan pour applications utilitaires

Actuellement indisponible dans Unity.

Suivi des applications hors magasin

 Remarque

Google Play est la boutique par défaut. Si vous mettez votre application en ligne uniquement sur Google Play, veuillez passer cette section.

Pour effectuer le suivi des installations hors Google Play, définissez le canal/la boutique dans le fichier AndroidManifest.xml de l'application en indiquant un canal unique ou un nom de boutique pour chaque fichier APK. La valeur CANAL est sensible à la casse.

Exemples :

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 Remarque

Vous devez définir la valeur CANAL dans le tableau de bord AppsFlyer lors de la configuration de l'application.

Placez la balise de métadonnées avant la balise </application>.

Pour obtenir plus d'informations sur la manière de suivre les installations des applications hors boutique, veuillez lire ceci.

Exclusion

Dans certains cas extrêmes, vous pouvez vouloir arrêter tout suivi SDK en raison de la conformité aux exigences légales et à la vie privée. L'API isStopTracking le permet. Une fois cette API appelée, notre SDK ne communiquera plus avec nos serveurs et cessera de fonctionner.

AppsFlyer.stopTracking(true);

Dans chaque événement, le SDK peut être réactivé en appelant la même API, avec la valeur false.

Il existe différents scénarios d'exclusion d'utilisateurs. Nous recommandons vivement de suivre les instructions exactes du scénario qui correspond à votre application.

 Avertissement

Utilisez cette API uniquement lorsque vous souhaitez exclure cet utilisateur de tout suivi. L'utilisation de cette API impacte FORTEMENT votre attribution, votre collecte des données et votre mécanisme de deep linking.

Définition des données personnalisées supplémentaires

The setAdditionalData API is required to integrate on the SDK level with several external partner platforms, including Segment, Adobe and Urban Airship. Use this API only if the integration article of the platform specifically states setAdditionalData API is needed.
The following is a code example for implementing setAdditionalData on Unity:

Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");
AppsFlyer.setAdditionalData(CustomDataMap);

Attribution pour des application préinstallées

Android uniquement

Vous pouvez, du point de vue de la programmation, définir une source média pré-installée de Unity en utilisant l'API suivante :

setPreinstallAttribution(string MediaSource, string Campaign, string Site_Id);

Pour plus de détails sur les implémentations natives, cliquez ici.

 Important !

Lorsque vous utilisez le SDK Unity AppsFlyer, évitez

PlayerPrefs.DeleteAll()

10. Tester votre intégration

For instructions ton testing your integrations according to your operating system, click Android Testing or iOS Testing.

Vous pouvez maintenant commencer à suivre les sources média avec lesquelles vous travaillez.

11. Problèmes connus

ProGuard

If you are using ProGuard for Android and you encounter a warning regarding our AFKeystoreWrapperclass, then add the following code to your ProGuard rules file:

-keep class com.appsflyer.** { *; }

IL2CPP

Pour exclure notre SDK de la suppression du bytecode managé avec IL2CPP, ajoutez ce qui suit au fichier link.xml :

<linker>
  <assembly fullname="mscorlib">
    <type fullname="AppsFlyer.*" preserve="all"/>
  </assembly>
…
</linker>

IMPL_APP_CONTROLLER_SUBCLASS

If you are using additional plugins that need to override AppControllerClassName, modify AppsFlyerAppController as seen below (objective-c):

+(void)load
{
  [AppsFlyerAppController plugin];
}

// Singleton accessor.
+ (AppsFlyerAppController *)plugin
{
  static AppsFlyerAppController *sharedInstance = nil;
  static dispatch_once_t onceToken;
  
  dispatch_once(&onceToken, ^{
    
    sharedInstance = [[AppsFlyerAppController alloc] init];
  });
  
  return sharedInstance;
}

//IMPL_APP_CONTROLLER_SUBCLASS(AppsFlyerAppController)

12. Exemple de projet Unity

Pour voir un projet exemple Unity, cliquez ici.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 3 sur 8

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.