Intégration du SDK AppsFlyer - Android

android.pngVersion SDK : 4.8.15 (Notes de version)

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.

The AppsFlyer Android SDK is compatible with Android OS version 2.3 and above.

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
  • The rest of the described features are OPTIONAL to implement, although some of them may be necessary for you, depending on your app's business logic. For example, tracking revenue or getting the conversion data on first launch may be vital for your app's flow

2. Démarrage rapide

2.1 SDK Download

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.  Add this to Module-level /app/build.gradle before dependencies:
repositories { 
    mavenCentral()
}
  1. Add the implementation dependency with the latest version of the AppsFlyer SDK.
  2. Add this to Module-level /app/build.gradle after repository:
dependencies {
	implementation 'com.appsflyer:af-android-sdk:4+@aar'
	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

If you get the error "Unresolved class SingleInstallBroadcastReceiver" after adding the receiver to AndroidManifest.xml, make sure to build the app first.

3. Initialisation du SDK

Initialization of the SDK is completed in two stages. In the first stage the DevKey is supplied along with an optional conversionDataListener. In the second stage the call to startTracking indicates that all relevant preparations are complete (e.g. call setCustomerUserId) and the SDK can start tracking all events.

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 : compile '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);


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

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>


Le 
schéma configuré est corrélé avec la valeur af_dp que vous incluez dans votre lien de suivi.

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, apparaissant comme 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 !

Do NOT format the revenue value in any way. It should not contain comma separators, currency sign, or text. A revenue event should be similar to 1234.56, for example.

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 :

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.

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

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

Suivi des désinstallations

AppsFlyer vous permet de suivre les désinstallations d'applications.

Pour terminer complètement et correctement ce processus, vous devezlirececi.

Tracking Push Notifications

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.

Cross Promotion Tracking

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.

Set Currency Code

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

Calling validateAndTrackInAppPurchase automatically generates an af_purchase in-app event. There is no need to send this event yourself.

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

Track Out-of-Store Apps

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

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 reporting et votre attribution.

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);⏎       // Faites ce qu'il faut pour obtenir le customerUserID⏎       // ...⏎       // tout code SDK d'AppsFlyer appelé ici sera ignoré⏎      //Une fois le customerUserID disponible, appelez l'API suivante :⏎ 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

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

Now you can start tracking the media sources you work with.

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 : 17 sur 19

Commentaires

0 commentaire

Veuillez vous connecter pour laisser un commentaire.