Intégration du SDK AppsFlyer - Android

  • Annonceurs
  • Développeurs

android.pngSDK Version: 4.8.19 (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

  • 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.
  • 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. Open your project (or create a new project), and then open your_app | build.gradle
  2. Add this to Module-level /app/build.gradle before dependencies:
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 {
	implementation 'com.appsflyer:af-android-sdk:4+@aar'
	implementation 'com.android.installreferrer:installreferrer:1.0'
}

 Important !

  • The 'com.android.installreferrer:installreferrer:1.0' dependency is required to support Google's Play Install referrer API. Using this API improves attribution accuracy, protects from install fraud and more.
  • The API is supported from AppsFlyer's Android SDK version 4.8.6 and onwards. If updating from an older SDK version complete this new dependency's integration by updating the SDK's init method.
  • 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

The following dependency: implementation 'com.android.installreferrer:installreferrer:1.0' And the getApplicationContext() passed in the following method: AppsFlyerLib.getInstance().init(AF_DEV_KEY, getConversionListener(), getApplicationContext()); are the prerequisite for reporting Google's New Referrer API to 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 - use getApplicationContext()
//eventName is any string to define the event name.
//eventValues is a map of event parameters that comprise a rich event. 
public static void trackEvent(Context context, String eventName, Map eventValues);


Exemple
: Évènement In-App de niveau atteint

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

Ceci génère un évènement de type af_level_achieved avec les valeurs d’événement suivantes :
{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);

Activities that are meant to be opened by deep linking should have the below intent filter on the activity definitions in the manifest file.

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

To receive your deep link data, you must implement the callback onAppOpenAttribution called by the AppsFlyer SDK. It returns the Onelink/tracking link parameters used to trigger the app open. Then, you can parse the values and apply the logic to trigger the relevant app page.

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

Use the af_revenue (AFInAppEventParameterName.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

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”}

The purchase event above contains a $200 revenue, appearing as revenue in the dashboard.

 Remarque

Setting user local currency code for in-app purchases - the currency code should be a 3 character ISO 4217 code. (default is USD).

You can set the currency code for all events by calling the following method: 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(AppsFlyerLib.LOG_TAG, "attribute: " + attrName + " = " + conversionData.get(attrName));
   }
 }
 @Override
 public void onInstallConversionFailure(String errorMessage) {
   Log.d(AppsFlyerLib.LOG_TAG, "error getting conversion data: " + errorMessage);
 }
 @Override
 public void onAppOpenAttribution(Map<String, String> conversionData) {
 }
 @Override
 public void onAttributionFailure(String errorMessage) {
   Log.d(AppsFlyerLib.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 :

To avoid setting the customer user ID value again beyond the first launch you can check if its value is empty or not by using:

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

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

Définir l'E-mail Utilisateur

AppsFlyer vous permet de déclarer une ou plusieurs adresses e-mail associées à l'appareil. Vous devez collecter les adresses e-mail et les indiquer à AppsFlyer, selon votre méthode de cryptage requise.

Les méthodes de cryptage suivantes sont disponibles : SHA1, MD5, SHA256 et en clair.

Exemple :

public void setUserEmails(String... emails);


Exemple d’utilisation :

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

 Remarque

Les renseignements personnels (PII) tels que les adresses e-mail ne sont pasconservés par AppsFlyer et ces informations ne sont pasprésentées dans les rapports. La collecte de ces informations est uniquement à des fins de postback vers la source média.

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

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 SDK versions 4.8.8 and below the specific app needed 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");

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 :

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.

To complete this process fully and correctly read here.

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 vous permet de suivre et d'attribuer des installations provenant d'une promotion croisée de l'une de vos applications à partir de l'application actuelle dont dispose l'utilisateur. Les applications de promotion croisée peuvent constituer un facteur de croissance important dans l'élaboration d'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 des 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 clé 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

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

L'anonymisation des utilisateurs impacte FORTEMENT 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

Par défaut, au moins 5 secondes doivent s'écouler entre 2 lancements d'applications pour que cela soit considéré comme 2 sessions distinctes (pour en savoir plus sur le comptage de session).
Toutefois, vous pouvez utiliser l'API suivante pour définir votre valeur personnalisée de durée minimale requise entre les sessions :
AppsFlyerLib.setMinTimeBetweenSessions(int seconds);

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

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

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

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

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

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.