Intégration du SDK AppsFlyer - Android

  • Annonceurs
  • Développeurs

android.pngSDK Version: 4.10.0 (Release Notes)

1. Aperçu

Le SDK AppsFlyer offre des fonctionnalités de suivi d'installation d'application et d'évènement. Nous avons développé un SDK très robuste (plus de 7 milliards d'installations du SDK à ce jour), sécurisé, léger et très simple à intégrer.

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

 Important !

Le SDK Android AppsFlyer est compatible avec Android OS version 2.3 ou plus récente.

Le SDK est également compatible avec les plates-formes Android non mobiles telles que les téléviseurs intelligents, y compris Fire TV d'Amazon.

Pour les apps développées pour Fire TV d'Amazon, utilisez la solution de suivi hors boutique d'AppsFlyer.

Si vous migrez depuis le SDK Android AppsFlyer V.3.3.x, cliquez ici.

 Astuce

  • Les chapitres 2 et 3 sont OBLIGATOIRES pour implémenter le SDK de base, c’est-à-dire l'attribution de l’installation uniquement
  • L'implémentation du chapitre Suivi des événements in-app est FORTEMENT RECOMMANDÉE
  • 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.
  • Avant de commencer à intégrer le SDK, ajoutez l'app à votre compte AppsFlyer.

2. Démarrage rapide

2.1 Téléchargement du SDK

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

Pour vérifier l’intégrité du téléchargement SDK, cliquez ici.

Pour plus de détails sur l'application modèle d'AppsFlyer, cliquez ici.

2.2 Intégration du SDK dans l'application

Vous pouvez intégrer le SDK AppsFlyer soit automatiquement, en utilisant la gestion des dépendances de Gradle, soit manuellement comme fichier SDK .jar.

2.3 Ajouter le SDK à votre projet

La manière la plus simple d'intégrer le SDK à votre projet est d'utiliser la gestion des dépendances de Gradle. Les informations de version peuvent être trouvées ici.

Si vous n’utilisez pas Gradle, téléchargez et ajoutez le fichier AF-Android-SDK.jar au chemin de la catégorie de projet.

Ajouter une dépendance au SDK Android AppsFlyer :

  1.  Ouvrez votre projet (ou créez un nouveau projet), puis ouvrez your_app | build.gradle
  2.  Ajoutez ceci au niveau Module /app/build.gradle avant dépendances :
repositories { 
  mavenCentral()
}
  1. Ajoutez la dépendance d'implémentation avec la dernière version du SDK AppsFlyer.
  2. Ajoutez ceci au niveau Module /app/build.gradle après le répertoire :
dependencies {
// always make sure to use the latest SDK version: 
// https://mvnrepository.com/artifact/com.appsflyer/af-android-sdk
	implementation 'com.appsflyer:af-android-sdk:4.9.0'
	implementation 'com.android.installreferrer:installreferrer:1.0'
}

 Important !

  • La dépendance 'com.android.installreferrer:installreferrer:1.0' est requise pour prendre en charge l'API Install Referrer de Google Play.  Utiliser cette API améliore la précision de l’attribution, protège contre les installations frauduleuses et bien plus encore.
  • L’API est supportée par le SDK Android AppsFlyer version 4.8.6 et ultérieures. Si vous effectuez une mise à jour depuis une version du SDK plus ancienne, terminez l’intégration de cette nouvelle dépendance en mettant à jour la méthode init du SDK.
  • Les développeurs qui utilisent ProGuard et souhaitent utiliser la nouvelle API du référent de Google doivent définir la règle ProGuard suivante : -dontwarn com.android.installreferrer
  • Les développeurs qui n'utilisent pas Gradle build ou aar et souhaitent utiliser la nouvelle API du référent de Google doivent ajouter manuellement com.android.installreferrer jar en tant que fichier et s'assurer que l'autorisation suivante est ajoutée : com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE

2.4 Définir les Autorisations Requises

Le fichier AndroidManifest.xml doit inclure les autorisations suivantes :

<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" />

2.5 Définir le BroadcastReceiver dans 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 :

<application>
...
...

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

...
...
</application>

 Astuce

Si vous obtenez l'erreur "Unresolved class SingleInstallBroadcastReceiver" après avoir ajouté le récepteur à AndroidManifest.xml, veillez à créer d'abord l'application.

3. Initialisation du SDK

L’initialisation du SDK est effectuée en deux étapes. Dans un premier temps, la DevKey est fournie avec un conversionDataListener optionnel. Dans un deuxième temps, l'appel à startTracking indique que toutes les préparations appropriées ont été réalisées (par exemple l'appel à setCustomerUserId) et le SDK peut commencer à suivre tous les événements.

Pour initialiser le SDK, ajoutez le code suivant dans la fonctiononCreate()de votre Application :

import com.appsflyer.AppsFlyerLib;
import com.appsflyer.AppsFlyerConversionListener;

public class AFApplication extends Application {
  private static final String AF_DEV_KEY = "";
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionDataListener, getApplicationContext());
    AppsFlyerLib.getInstance().startTracking(this);  }
}

 Remarque

Vous pouvez également différer l’appel à startTracking et le placer dans toute fonction Activity OnCreate() pertinente.

 Astuce

La dépendance suivante : implementation 'com.android.installreferrer:installreferrer:1.0' ainsi que le getApplicationContext() collé dans la méthode suivante : AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); constituent un prérequis au reporting de l'API du nouveau point d'accès Google à AppsFlyer.

Votre dev key est accessible depuis le tableau de bord AppsFlyer dans la section Configuration des Paramètres Application :

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

4. Suivi des évènements In-App

Les évènements in-app permettent une analyse de ce qui se passe dans votre app. Il est recommandé de prendre le temps de définir les évènements que vous souhaitez mesurer pour vous permettre de suivre le ROI (Return On Investment) et la LTV (Valeur Vie).

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.

//context - utiliser getApplicationContext()
//eventName est tout code qui définit le nom de l'évènement.
//eventValues est une carte des paramètres d'évènement qui forment un évènement rich. 
public static void trackEvent(Context context, String eventName, Map eventValues);

Example: Level Achieved In-App Event

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

This generates an event of type af_level_achieved with the following event values:{af_level: 9, af_score: 100}

 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 Android version 4.8.1.
  • Ne pas ajouter de symbole monétaire ou de virgules aux chiffres, car ils ne sont pas reconnus.

 Exemple d'utilisation

Map<String,Object> eventValues = new HashMap<>();
eventValues.put(AFInAppEventParameterName.REVENUE, 1200);
eventValues.put(AFInAppEventParameterName.CURRENCY, "JPY");
AppsFlyerLib.getInstance().trackEvent(this, AFInAppEventType.PURCHASE, eventValues);

5. Suivi du Deep Linking

 Astuce

Nous vous recommandons fortement d'intégrer le Deep Linking à votre application. Le Deep Linking est un élément crucial des campagnes de retargeting, et il est fortement recommandé de l'utiliser quand on exécute des campagnes de retargeting.

Pour chacune des activités qui peut être utilisée pour le deep linking (y compris l’activité principale si nécessaire), ajoutez la ligne suivante dans leonCreate() :

AppsFlyerLib.getInstance().sendDeepLinkData(this);

Les activités qui sont censées être ouvertes par le deep linking doivent avoir le filtre d'intention suivant dans les définitions d’activité, du fichier manifeste. 

<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="yourUniquescheme" />
</intent-filter>

The Scheme configured correlates with the af_dp value you include in your tracking link.

Pour recevoir vos données de deep linking, vous devez implémenter le callback onAppOpenAttribution 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.

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

Pour plus d'informations, veuillez cliquer ici, ou consulter la section Obtenir les données de conversion de cet article.

6. Suivi des revenus

Utilisez le paramètre d'évènement af_revenue (AFInAppEventParameterName.REVENUE) 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

af_revenue est le SEUL paramètre d’événement qui est compté sur AppsFlyer en tant que 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

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(getApplicationContext() , AFInAppEventType.PURCHASE , eventValue);

Ceci génère un évènement de 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 contient un revenu de 200 USD, apparaissant en tant que revenu dans le tableau de bord.

 Remarque

Définir le code de la devise locale de l'utilisateur pour les achats in-app - le code devise doit être un code ISO 4217 de 3 caractères. (la valeur par défaut est USD). 

Vous pouvez définir le code devise pour tous les événements en appelant la méthode suivante : AppsFlyer.setCurrencyCode("GBP");

 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.

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(getApplicationContext() , "cancel_purchase" , eventValue);

 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 d’attribution de l’utilisateur en temps réel pour chaque nouvelle installation, directement au niveau SDK. En faisant cela, vous pouvez offrir aux utilisateurs un contenu personnalisé ou les envoyer vers des activités spécifiques au sein de l’application, ce qui peut considérablement améliorer leur engagement avec votre application.

Pour accéder aux données de conversion d'AppsFlyer depuis le SDK Android, implémentez le ConversionDataListener :

public interface AppsFlyerConversionListener {
    void onInstallConversionDataLoaded(Map<String,String> conversionData);
    void onInstallConversionFailure(String errorMessage);
}

Exemple :

AppsFlyerLib.getInstance().registerConversionListener(this, new AppsFlyerConversionListener() {
 @Override
 public void onInstallConversionDataLoaded(Map<String, String> conversionData) {
   for (String attrName : conversionData.keySet()) {
     Log.d("LOG_TAG", "attribute: " + attrName + " = " + conversionData.get(attrName));
   }
 }
 @Override
 public void onInstallConversionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error getting conversion data: " + errorMessage);
 }
 @Override
 public void onAppOpenAttribution(Map<String, String> conversionData) {
 }
 @Override
 public void onAttributionFailure(String errorMessage) {
   Log.d("LOG_TAG", "error onAttributionFailure : " + errorMessage);
 }
});

8. Identificateurs d’utilisateur

Obtenez le DeviceID AppsFlyer

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

public String getAppsFlyerUID(Context context);

Exemple d'utilisation :

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

Définir l'ID Utilisateur-Client

Définir votre propre ID client vous permet de croiser votre propre ID unique avec l'ID unique d'AppsFlyer et les ID des autres appareils. Cet ID est disponible dans les rapports CSV d'AppsFlyer, avec les API de postback, vous permettant de les croiser avec vos ID internes.

Pour définir votre ID Utilisateur-Client :

public void setCustomerUserId(String id);

 

Exemple d'utilisation :

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

 Remarque

Il est recommandé de définir votre ID utilisateur-client dès que possible, car il n'est associé qu'aux événements signalés après son installation. Si setCustomerUserId est appelé avant de faire appel à startTracking, l'ID utilisateur-client sera inclus dans l'exportation brute en ce qui concerne les installations et les événements. S'il est défini après, vous verrez la valeur uniquement pour les événements suivis après avoir appelé cette méthode.

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.

 

Obtenir l'ID Utilisateur-Client :

Pour éviter de redéfinir la valeur de l'ID Utilisateur-Client après le premier lancement, vous pouvez vérifier si sa valeur est vide ou non en utilisant : 

AppsFlyerProperties.getInstance().getString(AppsFlyerProperties.APP_USER_ID)

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

ID Google Advertising

AppsFlyer collecte automatiquement le google_advertising_id depuis la version 4.8.0 du SDK. L'obligation de collecter l'ID publicitaire Google 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 SDK 4.8.8 et inférieure, l'application spécifique exigeait GPS). 

Afin d'envoyer explicitement ces ID à AppsFlyer, les développeurs peuvent utiliser l'un des API suivantes et la placer devant le code startTracking :

AppsFlyerLib.getInstance().setImeiData("IMEI_DATA_HERE");
AppsFlyerLib.getInstance().setAndroidIdData("ANDROID_ID_DATA_HERE");

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 :

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

 Avertissement

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

9. Fonctionnalités facultatives

Mesure des désinstallations

AppsFlyer vous permet de mesurer le taux de désinstallation des utilisateurs provenant de différentes sources.

Pour terminer complètement et correctement ce processus, lisez ceci.

Suivi des Notifications Push

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

Pour activer cette fonctionnalité, appelez la méthode suivante dans la méthode onCreate de chaque activité lancée en cliquant sur la notification :

AppsFlyerLib.getInstance().sendPushNotificationData(this);

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

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

 Remarque

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

Suivi des Promotions Croisées

AppsFlyer allows you to track and attribute installs originating from a cross promotion of one of your apps from within the current app the user has. Cross promoting apps can be a major growth factor in driving additional installs for your apps.For details, see the Cross Promotion Tracking article, here.

Suivi des invitations utilisateur

AppsFlyer allows you to track and attribute installs originating from user invites within your app. Allowing your existing users to invite their friends and contacts as new users to your app can be a key growth factor for your app. For details, see the User Invite Tracking article, here.

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

AFInAppEventParameterName.CURRENCY

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

La valeur par défaut est configurée sur le dollar US. 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 :

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

Validation des achats in-app

Le SDK d'AppsFlyer fournit une vérification au niveau du serveur pour les achats in-app. Pour définir le suivi de la validation des achats, appelez la méthode validateAndTrackInAppPurchase dans la fonction onActivityResult.

Cet appel génère automatiquement 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 rappel, l'un pour la « réussite » et l'autre pour « l'échec » (quelle qu'en soit la raison, y compris l'é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 :

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == 1001) {
    String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
    String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
    if (resultCode == RESULT_OK) {
      HashMap<String,String> event = new HashMap<>();
      event.put(AFInAppEventParameterName.PRICE,"9");
      AppsFlyerLib.getInstance().validateAndTrackInAppPurchase(getApplicationContext(),publicKey, dataSignature, purchaseData, "3.00", "ILS", event);
    }
  }
} 

 Remarque

L'appel à la méthode validateAndTrackInAppPurchase génère automatiquement un événement in-app af_purchase. Il n'est pas nécessaire d'envoyer cet événement vous-même.

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 :

AppsFlyerLib.getInstance().setDeviceTrackingDisabled(true);

Il est possible de reprendre le suivi en appelant de nouveau deviceTrackingDisabled défini sur false.

 Avertissement

Anonymizing users SEVERELY impacts your attribution information. Use this option ONLY for regions which legally prevents you from collecting your users' information.

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:
AppsFlyerLib.setMinTimeBetweenSessions(int seconds);
Note that setting a high value to the custom time between launches may badly impact APIs relying on sessions data, such as deep linking.

Sessions d'arrière-plan pour applications utilitaires

Si votre application est une application utilitaire s'exécutant en arrière-plan, vous pouvez utiliser l'API suivante dans le composant onCreate() - de votre activité :

public void reportTrackSession(Context context);

Exemple d'utilisation :

AppsFlyerLib.getInstance().reportTrackSession(context);

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 magasin, 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.

AppsFlyerLib.getInstance().stopTracking(true, context);

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.

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

 Important

N'appelez pas la méthode trackAppLaunch si l'API isStopTracking est définie sur true

Pour reprendre le suivi une fois que l'API stopTracking est définie sur false, utilisez l'API SDK suivante :

AppsFlyerLib.getInstance().trackAppLaunch(getApplicationContext(), AF_DEV_KEY);

 Avertissement

Utilisez l'API stopTracking 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.

Retarder l'initialisation du SDK dans l'attente du customerUserID

Il est possible d'attendre que le customerUserID soit défini pour lancer l'initialisation du SDK. Cette fonctionnalité permet de s'assurer que le SDK ne commence pas avant d'avoir obtenu le customerUserID. En cas d'utilisation de cette API, tous les évènements in-app ainsi que tous les appels à une API SDK sont ignorés, jusqu'à ce que le customerUserID soit fourni et suivi.

Pour indiquer que le SDK doit retarder l'initialisation dans l'attente de l'ID utilisateur-client, appelez

AppsFlyerLib.getInstance().waitForCustomerUserId(true);

immédiatement avant la méthode init(). Le reste de l'initialisation du SDK doit rester inchangé.

Une fois le customerUserID fourni, appelez

AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);

afin de fournir au SDK l'ID utilisateur-client approprié et de déclencher le suivi normal du SDK.

Le code doit apparaître comme suit :
public class AFApplication extends Application {
  private static final String AF_DEV_KEY = ;
  @Override
  public void onCreate() {
    super.onCreate();
    AppsFlyerConversionListener conversionDataListener = 
    new AppsFlyerConversionListener() {
      ...
    };
    AppsFlyerLib.getInstance().waitForCustomerUserId(true); 
    AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext());
    AppsFlyerLib.getInstance().startTracking(this);
    // Do your magic to get the customerUserID
    // ...
    // any AppsFlyer SDK code invoked here will be discarded
   //Call the following API once the customerUserID is available:
 AppsFlyerLib.getInstance().setCustomerIdAndTrack("customer_id", this);
  }
}

 Avertissement

Utilisez cette API uniquement dans les cas appropriés à votre logique métier. L'utilisation de cette API augmente les risques de divergences et pourrait rendre l'application plus exposée à la fraude.

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 Android:

HashMap<String,Object> CustomDataMap = new HashMap<>();
CustomDataMap.put("custom_param_1","value_of_param_1");
AppsFlyerLib.getInstance().setAdditionalData(CustomDataMap);

Attribution pour des application préinstallées

Plusieurs méthodes permettent l'attribution d'Android pour les applications préinstallées.

Pour plus de détails, veuillez cliquer ici.

Définir le port d'écoute de demande de suivi

Si vous souhaitez recevoir la confirmation que la demande de suivi a bien été reçue par les serveurs AppsFlyer, il est possible d'implémenter le port d'écoute AppsFlyerTrackingRequestListener.

La méthode de callback onTrackingRequestSuccess() est appelée toutes les 200 réponses à une demande d'attribution effectuée par le SDK.

La méthode de callback onTrackingRequestFailure(String error) est appelée pour toute autre réponse et renvoie la réponse sous forme de chaîne d'erreur.

Exemple d'implémentation

AppsFlyerLib.getInstance().startTracking(this.getApplication(),"devKey", myListener());
private AppsFlyerTrackingRequestListener myListener() {  
  return new AppsFlyerTrackingRequestListener() { 
    @Override public void onTrackingRequestSuccess() { 
      Log.d("Debug", "Got 200 response from server");  
    }  @Override public void onTrackingRequestFailure(String error) { 
      Log.d("Debug", error); 
      }  
    }; 
  }

Résoudre les URL Deep Link encapsulées

Si vous utilisez OneLink (qui prend en charge les liens universels) et les encapsulez avec un lien universel tiers, vous pouvez utiliser l'API setResolveDeepLinkURLs pour indiquer au SDK AppsFlyer quels domaines de clic qui appellent l'application doivent être résolus par le SDK et avoir le lien OneLink sous-jacent extrait de ces derniers. Cela vous permettra de maintenir le deep linking et le suivi tout en encapsulant le lien OneLink avec un lien universel tiers. Assurez-vous d'appeler cette API avant d'initialiser le SDK.

AppsFlyerLib.getInstance().setResolveDeepLinkURLs("example.com", "click.example.com");

10. Test de l'intégration du SDK

Pour tester l'intégration du SDK avant et après l'envoi à la boutique Google Play,cliquez ici.

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

11. Problèmes connus

Si vous utilisez ProGuard et que vous rencontrez un avertissement concernant notre classe AFKeystoreWrapper, ajoutez le code suivant à votre fichier de règles ProGuard :

-keep class com.appsflyer.** { *; }
Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 20 sur 25

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.

Contenu de la page: