Intégration du SDK AppsFlyer - Unity

Official_unity_logo.png

Version actuelle SDK Unity :  v4.16.4
Compatible avec Android SDK v4.8.11 et iOS SDK v4.8.4

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.

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 :

// le récepteur doit se trouver dans la balise <application> 
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
//Permission obligatoire :
<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


Après la création du projet dans Unity pour xCode, vous devez ajouter Security.Framework aux cadres et bibliothèques associés  de xCode si le cadre n’a pas été ajouté précédemment.


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

Dans vos méthodes Start / Init, vous définissez la DevKey AppsFlyer et les ID application uniques utilisées par iTunes et Google Play. Notez que vous devez utiliser des chiffres uniquement, sans le préfixe « id » pour définir l'ID application iOS ici.

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_HERE");
/* 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_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).

Le suivi des évènements in-app est réalisé en appelant trackEvent avec le nom de l'évènement et les paramètres de valeur. Consultez la documentation Évènements In App pour plus de détails.

 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 Deeplinking, 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>

6. Suivi des revenus

Utilisez le paramètre d'évènement AFEventParamRevenue pour intégrer le revenu comme élément d'un évènement in-app. Vous pouvez lui affecter n'importe quelle valeur numérique, positive comme négative.

 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"}
        });

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. Attachez-le au fichier AppsFlyerTrackerCallbacks.cs, qui est inclus dans le projet (vous devez nommer ce gameobject AppsFlyerTrackerCallbacks).
Plugin Unity Android > 4.15.1 Plugin Unity Android < 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 ("YOUR_DEV_KEY","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

Définir l’ID utilisateur tel qu'utilisé par l’application. 

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

AppsFlyer.setCustomerUserID("someId");

 Remarque

Le customerUserID DOIT être défini avant le trackAppLaunch/init. Il est recommandé de définir votre ID Utilisateur-Client dès que possible, car il n'est associé qu'aux événements reportés après son installation. L'ID Utilisateur-Client peut également être utilisé pour compléter les intégrations avec des plate-formes d'analyse, telles que Mixpanel et Swrve.

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

Par défaut, le numéro IMEI et l'ID Android ne sont pas collectés par le SDK si la version OS est supérieure à la version KitKat (4.4) et si l'appareil comprend les Services Google Play (sur la version Unity SDK 4.16.4 et inférieure, l'application spécifique exigeait GPS). 

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

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

Si l'application ne comprend PAS les services Google Play, le numéro IMEI ainsi que l'ID Android sont collectés par le SDK. Cependant, les applications dotées des services Google Play doivent éviter la collecte du numéro IMEI, qui contrevient à la politique Google Play.

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

Suivi des désinstallations

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

Android - Firebase Android - GCM iOS
1. Téléchargez le SDK Unity Firebase depuis : https://firebase.google.com/docs/unity/setup
2. Importez FirebaseMessaging.unitypackage dans le projet.
3.  Importez google-services.json dans le projet (obtenu dans la console de Firebase)

 Remarque

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


4. Dans la classe Unity gérant le code AppsFlyer, ajoutez le texte suivant :
avec Firebase.Messaging;
avec Firebase.Unity;

5.  Ajoutez à la méthode Start() :
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;

6. Ajoutez la méthode suivante :
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 

Pour assurer le suivi des promotions croisées avec Unity SDK (ou toute autre plate-forme non-native) implémentez cette solution.

Suivi des invitations utilisateur

Actuellement indisponible dans Unity.

Configuration du code de 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

Actuellement indisponible dans Unity.

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 pour des raisons de conformité légale et de respect de 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, si le résultat est faux.

 Avertissement

Utilisez cette API uniquement lorsque vous souhaitez exclure cet utilisateur de tout suivi. L'utilisation de cette API impacte FORTEMENT votre reporting et votre attribution.

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

L'API setAdditionalData est requise pour l'intégration au niveau SDK avec plusieurs plates-formes partenaires externes, dont Segment, Adobe et Urban Airship. Utilisez cette API uniquement si l'article d'intégration de la plate-forme indique spécifiquement que l'API setAdditionalData est requise.
Le code qui suit illustre l'implémentation de setAdditionalData sur Unity :

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

AppsFlyer.setAdditionalData(CustomDataMap);

 Important !

Lorsque vous utilisez le SDK Unity AppsFlyer, évitez

PlayerPrebs.DeleteAll()

10. Tester votre intégration

Pour les instructions de test de vos intégrations en fonction de votre système d’exploitation, cliquez sur Android Testing ou iOS Testing.

11. Projet exemple Unity

Pour voir un projet exemple Unity, cliquez ici.

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

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.