Intégration du SDK AppsFlyer - Android

  • Annonceurs
  • Développeurs

android.pngVersion SDK : 4.10.0 (Notes de version)

1. Aperçu

Le SDK AppsFlyer offre des fonctionnalités d'enregistrement 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 enregistrer les installations, les mises à jour et les sessions, de même que 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 d'attribution hors boutique d'AppsFlyer.

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

 Astuce

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 s'effectue 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 à enregistrer 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. Enregistrement des événements In-App

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

L'enregistrement des événements in-app est réalisé en appelant trackEventavec 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 terminé

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

record_in_app_event_android_studio.png

5. Effectuer 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 d'attribution.

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/d'attribution 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. Enregistrement 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.

Enregistrement de revenus négatifs

Si vous devez effectuer l'enregistrement 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 est uniquement associé aux événements reporté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 enregistrés 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.

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

Attribution des promotions croisées

AppsFlyer vous permet d'enregistrer et d'attribuer des installations provenant d'une cross-promotion de l'une de vos applications à partir de l'application actuelle dont dispose l'utilisateur. Les applications de cross-promotion 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 l'attribution de la cross-promotion, disponible ici.

Attribution des invitations utilisateur

AppsFlyer vous permet d'enregistrer 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 l'attribution 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 AppsFlyer fournit une vérification au niveau du serveur pour les achats in-app. Pour activer 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);

Vous pouvez annuler l'anonymisation 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'apps 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 le 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);

Attribution des applications hors boutique

 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 l'enregistrement 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 à l'intérieur de la balise <application>.

Pour obtenir plus d'informations sur la manière d'enregistrer les installations des applications hors boutique, veuillez lire ceci.

Exclusion

Dans certains cas extrêmes, vous pouvez vouloir arrêter toute fonction du 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 les fonctions du SDK 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 dans les cas où vous souhaitez ignorer complètement les fonctions du SDK de l'utilisateur. 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 enregistré.

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 du client approprié et de déclencher le 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

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

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 l'attribution 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 à mesurer les résultats des 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: