Intégration du SDK AppsFlyer - Android

Version actuelle : 4.7.1

NOTE : Un changement majeur a été introduit dans une précédente version du SDK et il est très important de lire ce document avec attention afin de vous assurer  de bien connaître ces évolutions.  Pour plus de détails sur le passage des versions V.3.3.x à 4.6.7 cliquez ici.

Le SDK AppsFlyer propose des fonctions de suivi des installations d’applications et des évènements. Nous avons développé un SDK très robuste (plus de 7 milliards d’installations à l’heure actuelle), sécurisé, léger, et très facile à intégrer.

De façon à évaluer le ROI et les degrés d’engagement des utilisateurs. Vous pouvez effectuer un suivi des installations, des mises à jour et des sessions (en suivant les étapes indiquées ci-dessous), mais également suivre les évènements in-app en plus des installations d’applications (y compris les achats in-app, les niveaux de jeux, etc.).

SDK_Integration_pic.jpg

Les étapes indispensables sont détaillées ci-dessous dans les sections 2 et 3, suivies des fonctionnalités additionnelles facultatives des sections 4 et 5.

Le SDK Android AppsFlyer est compatible avec Android 2.3 et versions ultérieures.

Téléchargement du SDK Android

Pour télécharger le fichier jar du SDK Android  , cliquez ici.

Pour plus d’informations sur AppsFlyer Sample App, cliquez ici.

1.  Notes de version

  • Les notes de version du SDK Android d’AppsFlyer sont consultables ici.  

2.  Intégration du SDK à votre Application (Indispensable)

Pour être en mesure de mesurer les installations et les sessions, il est indispensable de suivre les étapes suivantes :

Vous pouvez intégrer le SDK AppsFlyer soit de manière automatique, soit à l’aide de Gradle's Dependency Management, soit manuellement via un fichier SDK.jar.

2.1 Ajoutez le SDK AppsFlyer à votre projet.

La façon la plus simple d’intégrer le SDK à votre projet est d’utiliser Gradle's Dependency Management.  

Ajouter la dépendance au SDK Android d’AppsFlyer :

  1.  Ouvrez votre projet (ou créez un nouveau projet), puis ouvrez your_app | build.gradle

    Gradle_1.png

  2.  Ajoutez cela à Module-level/app/build.gradlebefore dependencies:
repositories {
	mavenCentral() 
}
  1.  Ajoutez la dépendance de compilation à la dernière version du SDK AppsFlyer dans le fichier build.gradle :
dependencies {
 compile 'com.appsflyer:af-android-sdk:4+@aar'
}

Les informations de version sont consultables ici

Vous pouvez maintenant importer le SDK AppsFlyer dans votre projet et l’intégrer comme expliqué dans ce guide. 

import com.appsflyer.AppsFlyerLib

Si vous n’utilisez pas Gradlen, téléchargez et ajoutez le fichierAF-Android-SDK.jar au chemin du projet.   

2.2 Configuration des autorisations requises

Le fichier AndroidManifest.xml devrait comporter les autorisations suivantes :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

* les autorisations ACCESS_WIFI_STATE et READ_PHONE_STATE sont facultatives.

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

L’ajout de cette autorisation permet au fournisseur de suivre l’IMEI.

2.3 Configurer un Install Referrer Broadcast Receiver dans AndroidManifest.xml

Les applications Android ne peuvent pas avoir plusieurs « receivers » comportant la même action à filtre d’intention.

Les deux options suivantes sont disponibles pour implémenter le install referrer broadcast receiver :

2.3.1 Utilisation d’un Multiple Broadcast Receiver

AppsFlyer propose une solition pour diffuser automatiquement INSTALL_REFERRER  à tous les autres « receivers ». Dans le fichier AndroidManifest.xml, ajoutez le « receiver » suivant comme PREMIER receiver pour INSTALL_REFERRER, et assurez-vous que la balise du receiver se trouve dans la balise de l’application :

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

Si vous souhaitez utiliser plusieurs receivers, le fichier Manifest.xml doit apparaître comme ceci :

<!—The AppsFlyer Install Receiver is first and will broadcast to all receivers placed below it -->
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
  <intent-filter>
     <action android:name="com.android.vending.INSTALL_REFERRER" />
  </intent-filter>
</receiver>
<!—All other receivers should follow right after -->     
<receiver android:name="com.google.android.apps.analytics.AnalyticsReceiver" android:exported="true">
 <intent-filter>
      <action android:name="com.android.vending.INSTALL_REFERRER" />
 </intent-filter>
</receiver>
<receiver android:name="com.admob.android.ads.analytics.InstallReceiver" android:exported="true">
      <intent-filter>
          <action android:name="com.android.vending.INSTALL_REFERRER" />
      </intent-filter>
</receiver>

2.3.2 Utilisation d’un Single Broadcast Receiver

Dans le fichier AndroidManifest.xml, ajoutez le « receiver » suivant comme PREMIER receiver pour INSTALL_REFERRER, ou à la suite d’un autre multiple broadcast receiver, et assurez-vous que la balise du receiver se trouve 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>

Pour plus d’informations sur comment ajouter un receiver supplémentaire pour accéder aux données d’installation d’application depuis le contexte de votre application, cliquez ici

2.4 Intégration de Google Play Services dans votre application

Il est essentiel de recueillir le Google Advertising ID (GAID) pour effectuer un suivi  des campagnes sur plusieurs sources telles que Facebook, Google, et Twitter. 

Pour ajouter un Google Advertising ID:

  1. Installez le SDK Google Play Services et importez-le dans votre projet.  Pour plus de détails sur ce téléchargement, cliquez ici.
  2. Ajoutez l’entrée suivant au fichier AndroidManifest.xml comme dernière entrée sous application (before </application>):
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />

NOTES:  

  • AppsFlyer utilise la bibliothèque Google Play Services pour récupérer le Google Advertising ID.
  • Google Play Services 7.5 est la version minimale requise pour GCM Registration Token (qui est utilisé pour nos mesures sur les désinstallations).  AppsFlyer recommande de toujours utiliser la dernière version.

Bien que la bibliothèque offre des services additionnels, si vous utilisez ProGuard dans votre processus de compilation, son empreinte reste légère. Nous utilisons uniquement les packages publicitaires de Google Services. Si vous souhaitez optimiser la taille de votre projet, vous pouvez exclure tous les autres packages.

Pour plus de détails, consultez le lien suivant https://developers.google.com/android/guides/setup.

Source: https://developer.android.com/google/play-services/setup.html

2.5 Collecter l’Android ID and l’IMEI

Par défaut, l’IMEI et l’Android ID ne sont pas collectés par le SDK si la version de l’OS supérieure à KitKat (4.4) et que l’appication intègre Google Play Services.   

Pour envoyer ces ID de façon explicite à AppsFlyer, les développeurs peuvent les API :

AppsFlyerLib.getInstance().setImeiData(<IMEI DATA HERE>)
AppsFlyerLib.getInstance().setAndroidIdData(<ANDROID ID DATA HERE>)

Si l’application n’intègre pas Google Play Service, l’IMEI et l’Android ID seront recueillis par le SDK.

Les développeurs peuvent abandonner la collecte d’IME et d’Android ID avec ces API :

AppsFlyerLib.getInstance().setCollectIMEI(false)
AppsFlyerLib.getInstance().setCollectAndroidID(false)

NOTE: Au moins un device identifier devrait être collecter pour obtenir une attibution pertinente.

3.  Initialisation du SDK & Evènement d’Installation (Minimum requis pour le fonctionnement du suivi)

NOTE: Ceci est le minimum requis pour pouvoir suivre les installations de votre application.

3.1 Initialisation du SDK

Pour initialiser le SDK, ajouter lee code suivant à votre fonction onCreate :

public void startTracking(Application application, String key);

Exemple d’utilisation

AppsFlyerLib.getInstance().startTracking(this.getApplication(),<Dev_Key>);

Remplacez [Dev_Key] avec votre propre Dev_Key (accessible dans votre compte, sous App Settings).

App_Settings_new1.png

Cet API permet à AppsFlyer de détecter les installations, les sessions, et les mises à jour.

3.2 Rapports de liens profonds pour l’attribution sur le reciblage

Si votre application est compatible avec les liens profonds ou intègre des activités multiples, vous devez suivre les étapes de la section 5.6

3.3 Rapport de sessions en arrière-plan

Si votre application est un utilitaire fonctionnant en arrière-plan, vous pouvez utiliser l’API, comme expliqué dans la section 5.12, pour mesure les sessions et la rétention au sein d’AppsFlyer.

 4.  API de suivi des évènements in-app (Optionnel)

Cet API permet à AppsFlyer de suivre les évènements post-installation. Ces évènements sont définis par l’annonceur et contiennent un nom d’évènements en plus des valeur optionnelles d’évènements.

Effectuer un suivi des événements in-app vous aide à mesurer et analyser comment les utilisateurs fidèles découvrent votre application, et à les attribuer à des campagnes et source médias précises. Il est vivement recommandé de prendre le temps de définir les évènements que vous souhaitez mesurer pour suivre votre ROI (retour sur investissement) et votre LTV (valeur vie client).

Syntaxe :

public static void trackEvent(Context context, String eventName, Map eventValues)

context - use getApplicationContext()

eventName représente n’importe quel chaîne pour définir le nom de l’évènement.

eventValues est une carte de paramètres d’évènements qui composent un évènement riche.  

Comptabiliser les revenus dans le cadre d’un évènement in-app riche : Utilisez ‘af_revenue” (constante)

AFInAppEventParameterName.REVENUE

Paramètre d’évènement pour comptabiliser les revenus dans le cadre d’un évènement in-app : Vous pouvez la compléter avec n’importe quelle valeur numérique, positive ou négative.

NOTE:  “af_price” 

AFInAppEventParameterName.PRICE

n’es pas comptabilisé comme revenu. C’est un paramètre descriptif n’intervenant pas dans les mesures de revenus et de LTV.

Exemple 1 : Evènement in-app pour la complétion de niveau

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.LEVEL,9);
eventValue.put(AFInAppEventParameterName.SCORE,100);
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.LEVEL_ACHIEVED,eventValue);

Cela génère un évènement du type « af_level_achieved », avec les valeurs d’évènement suivantes :

{af_level: 9, af_score: 100}

Exemple 2 : Évènements d’achats

Map<String, Object> eventValue = new HashMap<String, Object>();
eventValue.put(AFInAppEventParameterName.REVENUE,200);
eventValue.put(AFInAppEventParameterName.CONTENT_TYPE,"category_a");
eventValue.put(AFInAppEventParameterName.CONTENT_ID,"1234567");
eventValue.put(AFInAppEventParameterName.CURRENCY,"USD");
AppsFlyerLib.getInstance().trackEvent(context,AFInAppEventType.PURCHASE,eventValue);

Cela génère un évènement du type « af_purchase », avec les valeurs d’évènement suivantes :

{af_content_id: “1234567”, af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

L’évènement d’achat ci-dessus comporte un revenu de 200 dollars, et apparaît comme revenu dans le tableau de bord.

NOTES:

  • Le nom d'un évènement in-app doit être de 45 caractères maximum.  Les noms d’èvements de plus de 45 caratères n’apparaissent pas dans le tableau de bord, mais uniquement dans les API de données brutes, et les API Push et Pull.
  • Le nombre d’évènements in-app pouvant être définis dans une application est limité à 128.

Pour plus de détails concernant les évènements in-app riches AppsFlyer sur Android, cliquez ici.

5.  Intégration avancée

Les API ci-dessous sont facultatifs et font partie de l’intégration avancée avec le SDK AppsFlyer.

5.1 Paramétrage du code de devises (optionnel)

En plus des codes de devises spécifiques pouvant être utilisés au sein de chaque évènement in-app envoyés à AppsFlyer, vous avez également la possibilité de définir un code de devises international en utilisant l’API ci-dessous. Le code de devises international est utilisé lorsque af_currency 

AFInAppEventParameterName.CURRENCY

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

USD est la valeur par défaut. Consultez ici les codes de devises ISO compatibles.

Utilisez l’API suivant pour définir le code de devises :

public void setCurrencyCode(String currencyCode);

Exemple d’utilisation

AppsFlyerLib.getInstance().setCurrencyCode("GBP");

5.2 Paramétrage de l’Unique AppsFlyer (optionnel)

Un ID unique propriétaire AppsFlyer est créé à chaque nouvelle installation d’une application. L’ID unique d’AppsFlyer est l’ID principal utilisé par AppsFlyer dans les rapports et les API.

Utilisez l’API suivant pour obtenir l’ID unique d’AppsFlyer :

public String getAppsFlyerUID(Context context);

Exemple d’utilisation

String appsFlyerId = AppsFlyerLib.getInstance().getAppsFlyerUID(this);

5.3 Obtention de l’ID Unique AppsFlyer (optionnel)

Définir votre propre ID client vous permet de d’effectuer un croisement entre votre propre ID unique, l’ID unique AppsFlyer  et les ID des autres appareils. Cet ID est disponible dans les rapports CSV d’AppsFlyer ainsi que que des les API Postbacks pour un recoupement avec vos ID internes.

Pour configurer un ID utilisateur client:

public void setCustomerUserId(String id);

Exemple d’utilisation

AppsFlyerLib.getInstance().setCustomerUserId("myId");

REMARQUES IMPORTANTES :

  • Il est vivement recommandé de de configurer aussi tôt que possible votre ID utilisateur client car il est uniquement associé aux évènements rapportés après la configuration de ce paramètre.
  • Vous devez configurer l’ID utilisateur client via cet API pour pouvoir bénéficier des intégrations AppsFlyer avec les plateformes analytiques telles que Mixpanel et Swrve.

5.4 Obtenir les données de conversion (optionnelle)

AppsFlyer vous permet d’accéder aux données d’attribution en temps-réel, et directement au niveau du SDK. Cela vous permet de personnaliser la page d’accueil s’affichant à l’utilisateur lors de la toute première ouverture de l’application après sa première installation.

Pour plus d'informations sur cette fonctionnalité avancée lire ici.

5.5 Configuration de l’email utilisateur (optionnel)

AppsFlyer vous permet de rapporter une ou plusieurs adresses email associées à un appareil. Vous devez collecter les adresses emails et les communiquer à AppsFlyer selon votre méthode de cryptage.

La méthode de cryptages suivantes sont disponibles : SHA1, MD5, SHA256 et plain.

Exemple:

public void setUserEmails(String... emails);

Exemple d’utilisation

AppsFlyerLib.getInstance().setUserEmails(AppsFlyerProperties.EmailsCryptType.MD5, "email1@domain.com","email2@domain.com", ….);

NOTE: Les Informations Personnelles Identifiables (PII) telles que les adresses email ne sont pas conservées par AppsFlyer, et ces informations n’apparaissent dans aucun rapport. Cette collecte d’information a pour seule finalité l’envoi de postback à la source média.

5.6 Rapports de liens profonds pour l’attribution sur le reciblage (optionnel)

Les liens profonds sont des éléments essentiels des campagnes de reciblage, et il vivement recommandé d’y recourir lors du lancement de campagnes de reciblage.

Pour chaque activité utilisé pour les liens profonds*, en dehors de l’activité principale, ajoutez la ligne suivante dans onCreate()

AppsFlyerLib.getInstance().sendDeepLinkData(this);

* Les activités conçues pour être ouvertes par un lien profond devrait avoir le filtre d'intention ci-dessous dans les définitions d’activités du fichier manifest.

<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 unique scheme" />
</intent-filter>

5.7 Validation des reçus d’achats in-app (optionnel)

Le SDK AppsFlyer offre une vérification des serveurs pour les achats in-app. Pour configurer le suivi de la validation, appelez la méthode validateAndTrackInAppPurchase dans la fonction onActivityResult.

Cet appel génère automatique un évènement in-app “af_purchase”.

public static void validateAndTrackInAppPurchase(Context context,
String publicKey, String signature, String purchaseData, String price,
String currency, HashMap<String, String> additionalParameters);

Cet appel contient deux blocs de callback, l’un pour « success » et l’autre pour « failure » (pour n’importe quelle raison, y compris un échec de validation).

AppsFlyerLib.getInstance().registerValidatorListener(this,new AppsFlyerInAppPurchaseValidatorListener() {
          public void onValidateInApp() {
              Log.d(TAG, "Purchase validated successfully");
          }
          public void onValidateInAppFailure(String error) {
              Log.d(TAG, "onValidateInAppFailure called: " + error);
          }
      });

Exemple d’utilisation

AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(context,publicKey, signature, purchaseData, price,currency, null;

5.8 Exclusion d’utilisateur finaux (optionnel)

AppsFlyer propose une méthode pour exclure des utilisateurs spécifiques des analyses AppsFlyer. Cette méthode est conforme aux plus récentes règles de confidentialité ainsi qu’aux politiques de confidentialité et de données de Facebook. Par défaut, ce paramètre est configuré sur NO, et le suivi est donc établit par défaut.

Utilisez cet API lors de l’initialisation du SDK effectuée en Section 4 pour une exclusion totale :

public void setDeviceTrackingDisabled(boolean isDisabled);

Exemple d’utilisation

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

5.9 Suivi des installations d’applications en dehors de Google Playc (optionnel)

REMARQUE IMPORTANTE : Google Play esrt l’app store par défaut. Si vous publiez votre application sur Google Play uniquement, sautez cette section.

Pour suivre les installations en dehors de Google Play, configurer le canal/app store dans le fichier appAndroidManifest.xml avec nom de canal ou de store unique pour chaque APK. La valeur CHANNEL est sensible à la casse.

Exemples :

Amazon :

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

Standalone:

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

Verizon (Pré-installée) :

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

NOTE : Vous devez configurer la valeur CHANNEL dans le tableau de bord AppsFlyer lors du paramétrage de l’application.

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

Pour plus de détails sur comment suivre les installations pour les applications publiées en dehors de Google Play  consultez cette page.

5.10 Suivi des désinstallations d’applications

La fonctionnalité de suivi des désinstallation d’AppsFlyer vous permet d’effectuer un suivi des désinstallations pour une application spécifique et les attribuer à une source média précise.

Pour réaliser et compléter ce processus correctement, cliquez ici.

5.11 Implémentation des liens profonds avec OneLink (optionnel)

OneLink déclenche l’ouverture d’une application à l’emplacement du lien profond en précisant le mécanisme sous le paramètre af_dp.

Vous pouvez intégrer le callback onAppOpenAttribution appelé par le SDK AppsFlyer.  Cela renvoie les paramètres OneLink utilisé pour déclencher l’ouverture de l’application. Vous pouvez ensuite analysez les valeurs et appliquer la logique pour déclencher l’ouverture de la page souhaitée de l’application.

void onAppOpenAttribution(Map<String,String> attributionData); //android

Pour plus d'informations, cliquez ici.

5.12 Rapport de sessions en arrière-plan (optionnel)

Voici l’API recommandé pour les applications utilitaires souhaitant connaître et mesurer la rétention d’un utilisateur en fonctionnant en arrière-plan.

public void reportTrackSession(Context context);

Exemple d’utilisation

AppsFlyerLib.getInstance().reportTrackSession(context);

5.13 Mesures de notification Push (optionnel)

AppsFlyer vous permet de mesurer les notifications push dans le cadre d’une campagne de reciblage.

Pour activer cette fonctionnalité, appelez la méthode suivante dans la méthode onCreate de chaque activité qui sera lancée à la suite du clic sur la notification.

AppsFlyerLib.getInstance().sendPushNotificationData(this);

Les données utiles devraient inclure un objet : "af" avec la chaîne de valeur-clé correspondante :

\"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" })

Exemple d’utilisation

\"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\" } } }"

6.  Vérification de l’intégration du SDK

Tester l’intégration du SDK est un élément indispensable du processus.  Pour tester l’intégration du SDK avant et après le dépôt de l’application dans le Google Play Store, cliquez ici

7.  Problèmes connus

Si vous utilisez ProGuard et que vous rencontrez un message d’avertissement concernant notre classe AFKeystoreWrapper, ajoutez le code suivant au fichier rules de ProGuard :

-dontwarn com.appsflyer.AFKeystoreWrapper


 

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