En bref : le plug-in AppsFlyer Unity offre des possibilités d'attribution d'app et de reporting d'événements aux applications mobile Android et iOS créées depuis la plate-forme de développement Unity. Le plug-in est équivalent aux SDK iOS et Android d'AppsFlyer en terme de fonctionnement.
Pris en charge de Unity V6 sous iOS 14
Le plug-in Unity V6 est pris en charge par iOS 14 et propose des changements de méthodes API significatifs par rapport aux versions précédentes. La migration d'une version antérieure vers Unity V6 entraînera des modifications d'ordre fonctionnel. Ces changements incluent de nouvelles API, des classes et des noms de paquets différents, et la suppression de : com.appsflyer.GetDeepLinkingActivity
Pour mettre à jour votre plug-in sur une version plus ancienne (V5), consultez notre guide qui détaille comment migrer vers la version V6 bêta (nécessite la mise à jour du package Unity).
Remarque
Le plug-in Unity V4 est obsolète. Le guide d'intégration de la V4 est téléchargeable au format PDF (cf lien ci-dessous).
Plug-in Unity V6
Le plug-in Unity V6 permet de développer des apps iOS et Android en passant pat la plateforme Unity en temps réel. Il repose sur les SDK mobile AppsFlyer, et implémente les mêmes méthodes et prend en charge les même fonctionnalités que les SDK propres à chaque plateforme (iOS et Android). Ce plug-in open-source et disponible sur GitHub.Dans cet article, les termes "plug-in" et "SDK" se réfèrent à la même chose.
1. Présentation - Unity V6
Les apps mobile développées sur la plateforme Unity utilisent un même plug-in AppsFlyer pour les deux plateformes Android et iOS.
Onglet | Contenu | Résultat |
---|---|---|
[Obligatoire] Intégration |
Ajouter et configurer le plug-in |
Le tableau de bord de l'application affiche :
|
[Recommandé] |
Utilisez les API principales du plug-in pour :
|
Le tableau de bord de l'application affiche :
Prêt pour :
|
API supplémentaires |
Implémentez et utilisez les API optionnelles pour :
|
Prêt pour :
|
Référence de l'API |
Référence rapide de l'API du SDK pour les développeurs |
Développeurs d'app, cet onglet vous concerne. Une fois le plug-in implémenté et initialisé, le marketeur / annonceur verra s'afficher deux installations dans la vue d'ensemble du tableau de bord AppsFlyer de votre app : l'une organique, l'autre non organique.
2. Ajouter le plug-in à votre app
Important !
Le SDK AppsFlyer Unity ne prend pas en charge le système de compilation interne Unity.
2.1 Télécharger le plug-in Unity AppsFlyer
Téléchargez le plug-in depuis GitHub.
2.2 Installer le plug-in
L'External Dependency Manager for Unity (le gestionnaire de dépendances externes pour Unity - EDM4U) est fourni par défaut avec le plug-in AppsFlyer Unity. Ce qui permet de simplifier le processus d'intégration en résolvant les conflits de dépendance entre votre plug-in et certains autres plug-ins de votre projet.
Pour installer le plug-in :
Ajoutez appsflyer-unity-plugin.v*.unitypackage de manière à importer automatiquement les actifs requis par le plug-in AppsFlyer et l'EDM4U.
Pour installer le plug-in sans EDM4U :
- Importez appsflyer-unity-plugin.v*.unitypackage dans votre projet, mais veillez à bien effacer la sélection des dépendances de EDM4U.
- Téléchargez et ajoutez les dépendances Android requises dans le dossier Assets/Plugins/Android :
- Téléchargez et ajoutez les dépendances iOS requises au dossier Assets/Plugins/iOS/AppsFlyer :
2.3 Configurer Android
Pour accorder les autorisations Android nécessaires :
Définissez les autorisations listées ci-dessous dans le fichier AndoidManifest.xml :
<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" />
3. Implémenter et initialiser le plug-in
Cette section détaille comment implémenter et initialiser le plug-in.
3.1 Récupérer la clé dev
- La clé est unique et permet d'identifier le compte. Dans certains cas, il peut exister une clé au niveau de l'app.
- La clé dev est obligatoire.
Pour obtenir la clé dev :
- Dans AppsFlyer, rendez-vous dans Configuration > Paramètres de l'app.
- Récupérez la clé dev.
3.2 Initialiser le plug-in
Pour initialiser le plug-in à l'aide du prefab :
- Rendez-vous dans Actifs > AppsFlyer.
- Faites glisser AppsFlyerObject.prefab dans votre scène.
- Définissez les champs suivants :
Réglage Remarques Clé dev Collez la clé dev que vous venez de récupérer. ID d'app iOS : saisissez l'ID de l'app iOS. Assurez-vous de ne pas oublier le préfixe ID.
Android : laissez le champ vide.
Obtenir les données de conversion Si l'app implémente le deep linking AppsFlyer, définissez sur « True ». La valeur par défaut étant « False », le deep linking n'est PAS implémenté par défaut. Is debug (débogage) Pour consulter les journaux de débogage durant le développement : définissez sur «true».
Remarque: veillez à désactiver (mettre sur false) avant de mettre l'app en production.
- Mettez à jour le code dans Actifs >AppsFlyer >AppsFlyerObjectScript.cs pour se conformer aux autresAPI .
À intégrer manuellement :
Créez un game object et ajoutez le code init suivant :
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
void Start()
{
/* AppsFlyer.setDebugLog(true); */
AppsFlyer.initSDK("devkey", "appID", this);
AppsFlyer.startSDK();
}
public void onConversionDataSuccess(string conversionData)
{
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
// add deferred deeplink logic here
}
public void onConversionDataFail(string error)
{
AppsFlyer.AFLog("onConversionDataFail", error);
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
public void onAppOpenAttributionFailure(string error)
{
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
Remarque : veillez à ne pas appeler la destruction du game object.
4. Tester les installations
4.1 Mettre l'appareil de test sur liste autorisée
Mettre sur liste autorisée l'appareil de test.
4.2 Simulation d'installation
Simuler des installations organiques et non organiques.
Simuler une installation organique
Les installations organiques sont des installations non attribuées, elles résultent en général des installations effectuées directement depuis des app stores.
Pour simuler une installation organique, consultez les instructions relatives au système d'exploitation :
Simuler une installation non organique
Une installation non organique est une installation attribuée qui suit généralement un engagement sur une publicité.
Pour simuler une installation non organique (à l'aide de liens d'attribution), consultez les instructions relatives au système d'exploitation :
Remarque
Une fois que vous aurez terminé de tester et déboguer l'intégration, désactivez les journaux.
Enregistrer les évènements in-app et les revenus permet de mesurer la qualité des utilisateurs de votre app. Le deep linking permet quant à lui d'offrir une meilleure expérience à l'utilisateur.
Dans cet onglet, les développeurs d'app pourront trouver des instructions fort utiles. Il n'en reste pas moins que la contribution du propriétaire d'app ou marketer reste indispensable Le propriétaire de l'app :
- Décide des événements in-app qui doivent être enregistrés pour mesurer la qualité de l'utilisateur.
- Vous devez accéder à la plateforme AppsFlyer pour configurer le deep linking de OneLink.
5. Enregistrer des événements In-App
Enregistrez les événements in-app pour mesurer les KPI de type revenus, ROI et LTV (durée de vie).
Les événements in-app doivent être implémentés pour enregistrer les événements des utilisateurs. Les événements peuvent être envoyés de différentes façons :
- [Méthode conseillée] Envoi d'événements via l'app tel que décrit dans cet article.
- Pour découvrir d'autres méthodes, consultez le guide de présentation des événements in-app.
Pour les apps qui font partie d'une verticale (ex : les voyages, le gaming, le E-commerce) consultez la liste des événements in-app recommandés selon les verticales.
5.1 Noms et paramètres des évènements in-app
Pour envoyer des événements :
- Indiquez le nom et les paramètres de l'événement.
- Voir les listes associées :
- Liste des noms et structures d'événements recommandés
- Liste trouvée dans la classe
AFInAppEvents
.
[Méthode conseillée] Utilisez les noms et paramètres des événements pour les cas suivants :
- Dénomination standard : AppsFlyer peut mapper automatiquement les événements sur les SRN tels que Facebook, Google et Twitter.
- Rétrocompatibilité : aucun conflit si AppsFlyer décide de modifier le nom ou le paramètre d'un évènement. L'implémentation sera compatible avec les versions antérieures.
5.2 Enregistrer des revenus
Incluez les rapports de revenus en ajoutant le paramètre af_revenue
aux événements in-app.
- Renseignez
af_revenue
à l'aide de chiffres. Les valeurs négatives sont autorisées. - Le paramètre
af_revenue
permet de comptabiliser les revenus et il intervient dans les champs de données brutes d'AppsFlyer. Ce qui permet aux marketeurs de visualiser les revenus directement dans le tableau de bord. - Les revenus peuvent être envoyés avec des paramètres différents, mais la plateforme AppsFlyer ne les considèrera pas comme des revenus.
Cliquez ici pour plus de détails. - Les valeurs des revenus ne doivent contenir ni virgule, ni symbole monétaire, ni texte.
Exemple d'événement de revenus : 1234,56
Conseil :obtenez plus d'infos sur les paramètres de devise, l'affichage et la conversion des devises.
Règles à suive concernant le code de devise pour l'envoi d'événements générateurs de revenus.
- La devise par défaut est USD.
- Utilisez un code ISO 4217 à 3 caractères (cf exemple suivant).
- Définissez le code de devise en appelant l'API :
AppsFlyer.setCurrencyCode("ZZZ")
Exemple : évènement d'achat d'évènement in-app avec revenus
Cet événement d'achat correspond à 200,12 euros. Pour que les revenus apparaissent dans le tableau de bord, utilisez les éléments suivants.
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "EUR");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200.12");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a",);
AppsFlyer.sendEvent ("af_purchase", purchaseEvent);
Enregistrer des revenus négatifs
Enregistrez les revenus négatifs à l'aide du signe -.
- La valeur de revenu est précédée du signe moins.
- Le nom de l'événement a la valeur unique "cancel_purchase". Cela vous permet d'identifier les événements de revenus négatifs dans le tableau de bord et les rapports de données brutes.
Exemple : l'utilisateur de l'application reçoit un remboursement ou annule un abonnement.
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "-200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "1");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
AppsFlyer.sendEvent ("cancel_purchase", purchaseEvent);
5.3 Validation des achats in-app
Le plug-in effectue une vérification au niveau du serveur pour les achats in-app.
Pour valider un achat, suivez les instructions spécifiques au système d'exploitation :
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.validateAndSendInAppPurchase(
"publicKey",
"signature",
"purchaseData",
"price",
"currency",
null,
this);
#endif
Assurez-vous de tester à l'aide de l’appel au serveur sandbox Apple :
#if UNITY_IOS && !UNITY_EDITOR
AppsFlyeriOS.validateAndSendInAppPurchase(
"productIdentifier",
"price",
"currency",
"transactionId",
null,
this);
#endif
Paramètres de la méthode
Paramètre | Description |
---|---|
String publicKey | Clé publique de Google Developer Console |
Signature de chaîne |
Signature de transaction ; renvoyée par l'API Google lorsqu'un achat est terminé |
Chaîne purchaseData |
Produit acheté au format JSON ; renvoyé par l'API Google lorsqu'un achat est terminé |
Chaîne revenus | Revenu de l'évènement in-app à signaler à AppsFlyer |
Chaîne devise | Devise de l'évènement in-app à signaler à AppsFlyer |
Dictionary<String, String> additionalParameters |
Paramètres d'événement in-app supplémentaires qui apparaissent dans le champ event_value des données brutes d'événement in-app |
Paramètre | Description |
---|---|
Chaîne productIdentifier | Identifiant produit |
Chaîne prix | Revenu de l'évènement in-app à signaler à AppsFlyer |
Chaîne devise | Devise de l'évènement in-app à signaler à AppsFlyer |
Dictionary<String, String> additionalParameters |
Paramètres d'événement in-app supplémentaires qui apparaissent dans le champ event_value des données brutes d'événement in-app |
Remarque
Appelez validateReceipt
pour générer automatiquement un évènement in-app af_purchase.
N'envoyez jamais d'événement d'achat après avoir validé l'achat. Cela produirait des rapports d'événements en double.
5.4 Considérations relatives aux événements in-app
- Nom de l'événement : 45 caractères maximum
- Valeur de l'événement : ne doit pas dépasser 1000 caractères - s'il est plus long, nous pourrions le tronquer
- Prend en charge les caractères hors alphabet anglais pour les événements in-app (et autres API)
- Tarifs et revenus :
- Utilisez uniquement des nombres et des décimales tels que 5 ou 5.2
- Jusqu'à 5 chiffres après la virgule acceptés. Par exemple 5,12345
5.5 Exemples d'enregistrement des évènement in-app
Enregistrez les événements in-app en appelant sendEvent
et incluez le nom de l'événement et les paramètres de valeur.
Consultez l'article Évènements in-app pour en savoir plus.
Exemple : comment enregistrer un évènement d'achat in-app
Pour obtenir une liste complète des extraits de code prêts à l'emploi par secteur, consultez notre guide concernant les évènements rich in-app par secteur.
System.Collections.Generic.Dictionary<string, string> purchaseEvent = new
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add(AFInAppEvents.CURRENCY, "USD");
purchaseEvent.Add(AFInAppEvents.REVENUE, "200");
purchaseEvent.Add(AFInAppEvents.QUANTITY, "2");
purchaseEvent.Add(AFInAppEvents.CONTENT_TYPE, "category_a");
purchaseEvent.Add(AFInAppEvents.CONTENT_ID, "092");
AppsFlyer.sendEvent (AFInAppEvents.PURCHASE, purchaseEvent);
5.6 Enregistrer des événements in app hors ligne
Parfois, les utilisateurs génèrent des événements in-app, alors qu'ils n'ont pas de connexion Internet. AppsFlyer met l'événement en cache et le rapporte dès que la possibilité se présente.
- Le plug-in envoie les événements aux serveurs AppsFlyer et attend la réponse.
- Si le plug-in n'obtient pas une réponse 200, l'événement est stocké en cache.
- Une fois que la réponse 200 suivante est reçue, l'événement en cache est renvoyé au serveur.
- S'il y a plusieurs événements dans le cache, ils sont envoyés au serveur les uns après les autres.
Remarque
Le cache peut stocker jusqu'à 40 événements.
- Seuls les 40 premiers événements hors ligne sont enregistrés.
- Les évènements hors ligne suivants, jusqu'à la prochaine réponse 200, ne sont pas retenus.
- Dans le rapport de données brutes,
- Heure de l'événement = le moment où l'événement est envoyé à AppsFlyer après la reconnexion en ligne de l'appareil.
- Ce n'est pas le moment où l'événement a eu lieu.
6. Deep link with OneLink
OneLink d'AppsFlyer est la solution pour l'attribution multiplate-forme, la redirection et le deep linking.
6.1 Détection et redirection d'appareils
OneLink :
- Détecte le type d'appareil (Android et iOS, ordinateur, etc.) lorsqu'un utilisateur effectue un clic, puis
- redirige l'utilisateur vers la destination correspondante : Google Play, app store iOS, marchés hors store ou pages web.
Pour implémenter les liens d'attribution multiplate-forme et découvrir les notions élémentaires du deep linking, veuillez parcourir le guide de la redirection OneLink.
6.2 Deep linking
Le deep linking vous permet d'envoyer les utilisateurs existants vers des activités spécifiques et du contenu personnalisé.
Le marketeur et le développeur doivent travailler ensemble pour configurer le deep link avec OneLink :
- Le marketeur doit accéder au tableau de bord AppsFlyer
- Le développeur doit accéder à l'application
Consultez notre guide de configuration du deep linking avec OneLink.
6.3 Deep linking différé
Le deferred deep linking vous permet de deep linker les nouveaux utilisateurs vers des activités spécifiques ou du contenu personnalisé dès la première ouverture qui suit l'installation d'une app.
Le deep link standard dirige également les utilisateurs vers des activités spécifiques et du contenu personnalisé, mais une application doit déjà être installée sur l'appareil de l'utilisateur .
Pour configurer un deep link différé avec OneLink :
- Le développeur doit accéder à la plate-forme AppsFlyer.
- La configuration de la plate-forme AppsFlyer pour le deep linking différé et standard est la même.
- Vous devez simplement implémenter une logique supplémentaire dans l'app pour pouvoir deep linker les utilisateurs et leur offrir un contenu personnalisé après l'installation et le lancement de l'app.
Consultez le deep link différé pour plus d'informations.
6.4 Obtenir les données de deep link
Le plug-in fournit des données de conversion ou d'engagement après chaque installation ou chaque événement de deep-linking. Utilisez ces données pour personnaliser le contenu ou le programme de comportement de l'app.
Pour recevoir les données de deep link :
- Implémentez le callback
onAppOpenAttribution
(qui figure dans la classeIAppsFlyerConversionData
); il est appelé par le plug-in AppsFlyer. - Les paramètres Onelink/lien d'attribution renvoyés déclenchent l'ouverture de l'app.
- Analysez ensuite les valeurs, et appliquez la logique pour déclencher la page appropriée de l'app.
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
Consultez les données de deep linking pour plus d'informations.
7. Obtenir les données de conversion
L'accès en temps-réel aux données d'attribution des utilisateurs est disponible pour chaque installation. Utilisez cette fonction pour améliorer l'engagement des utilisateurs en offrant :
- Contenu personnalisé
- Dirigez les utilisateurs vers des activités spécifiques au sein d'une app.Consultez notre article sur le deep linking différé.
Pour obtenir les données de conversion d'AppsFlyer :
- Implémentez le code
IAppsFlyerConversionDatabase
. - Appelez la méthode
initSDK
en l'utilisant comme paramètre final. - Utilisez la méthode
onConversionDataSuccess
pour rediriger l'utilisateur.
Voir la référence d'API pour onConversionDataSuccess.
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour , IAppsFlyerConversionData
{
void Start()
{
/* AppsFlyer.setDebugLog(true); */
AppsFlyer.initSDK("devkey", "appID", this);
AppsFlyer.startSDK();
}
public void onConversionDataSuccess(string conversionData)
{
AppsFlyer.AFLog("onConversionDataSuccess", conversionData);
Dictionary<string, object> conversionDataDictionary = AppsFlyer.CallbackStringToDictionary(conversionData);
// add deferred deeplink logic here
}
public void onConversionDataFail(string error)
{
AppsFlyer.AFLog("onConversionDataFail", error);
}
public void onAppOpenAttribution(string attributionData)
{
AppsFlyer.AFLog("onAppOpenAttribution", attributionData);
Dictionary<string, object> attributionDataDictionary = AppsFlyer.CallbackStringToDictionary(attributionData);
// add direct deeplink logic here
}
public void onAppOpenAttributionFailure(string error)
{
AppsFlyer.AFLog("onAppOpenAttributionFailure", error);
}
}
8. Attribution
Mesure des désinstallations
Mesurez le taux de désinstallation des utilisateurs provenant de différentes sources.
Pour configurer les mesures de désinstallation, référez-vous aux instructions du système d'exploitation correspondant.
- Téléchargez le SDK Unity Firebase depuis : https://firebase.google.com/docs/unity/setup.
- Importez FirebaseMessaging.unitypackage dans le projet.
- Importez google-services.json dans le projet (obtenu dans la console de Firebase)
Remarque
Le SDK Unity Firebase ajoute automatiquement des récepteurs de manifeste.
- Dans la classe Unity qui gère le code AppsFlyer, ajoutez le code suivant :
avec Firebase.Messaging; avec Firebase.Unity;
- Ajoutez à la méthode Start() :
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
- Ajoutez la méthode suivante :
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token)
{
#if UNITY_ANDROID
AppsFlyerAndroid.updateServerUninstallToken(token.Token);
#endif
}
Guide de désinstallation Android
Avertissement
Dans le cas : implémentation du SDK Unity Firebase.
Condition : N'ajoutez pas l'appel de méthode suivant pour activer UninstallTracking (« SenderID ») si vous avez ajouté le SDK Firebase Unity à votre projet.
Conséquences si ajouté :
- Le SDK Firebase Unity obtiendra l'ID de l'expéditeur à partir du fichier google-services.json (qui a été ajouté précédemment).
- Cela pourrait causer un avertissement de débogage de la part d'Android.
Vous pouvez obtenir votre device token depuis : UnityEngine.iOS.NotificationServices.deviceToken.
Appelez cette méthode lorsque vous recevez votre device token :
AppsFlyer.registerUninstall("device_push_notification_token");
Exemple :
using AppsFlyerSDK;
public class AppsFlyerObjectScript : MonoBehaviour, IAppsFlyerConversionData
{
private bool tokenSent;
void Start()
{
AppsFlyer.initSDK("devKey", "appID", this);
AppsFlyer.startSDK();
#if UNITY_IOS
UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound);
#endif
}
void Update()
{
#if UNITY_IOS
if (!tokenSent)
{
byte[] token = UnityEngine.iOS.NotificationServices.deviceToken;
if (token != null)
{
AppsFlyeriOS.registerUninstall(token);
tokenSent = true;
}
}
#endif
}
}
Pour plus de détails, veuillez vous reporter au Guide de désinstallation iOS
Définition des données personnalisées supplémentaires
L'intégration au niveau SDK avec plusieurs plateformes partenaires externes (dont Segment, Adobe et Urban Airship) nécessite l'utilisation de l'API setAdditionalData
.
Utilisez cette API uniquement si l'article d'intégration du partenaire spécifie clairement que l'API setAdditionalData
est requise.
Exemple : code setAdditionalData
Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");
AppsFlyer.setAdditionalData(CustomDataMap);
9. Sessions
Personnalisation de la durée entre sessions
Par défaut, il doit s'écouler au moins 5 secondes entre deux lancements d'app pour qu'elles soient considérées comme deux sessions distinctes. Définir la durée minimale entre les sessions :
AppsFlyer.setMinTimeBetweenSessions(custom_time_ins_seconds);
Remarque Le fait de définir une durée personnalisée à valeur élevé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).
Plus de détails sur le comptage des sessions d'application .
Sessions d'arrière-plan pour applications utilitaires
Indisponible dans Unity.
10. Médias propres
Résoudre les URL Deep Link encapsulées
Certains services tiers (tels que les fournisseurs de services de messagerie ) :
- Encapsulent les liens dans des e-mails en utilisant leurs propres domaines d'enregistrement de clics.
- Vous permettent de définir vos propres domaines d'enregistrement des clics.
Si OneLink est encapsulé dans de tels domaines, il est possible que ses fonctionnalités soient limitées. Pour éviter ce problème :
- Appelez l'API
setResolveDeepLinkURLs
avant d'initialiser le SDK. - Utilisez cette API pour obtenir le OneLink des domaines de clic qui lancent l'application.
Scenario : vous avez trois domaines de clic qui redirigent vers votre OneLink :https://mysubdomain.onelink.me/abCD.
Solution :
- Utilisez l'API
setResolveDeepLinkURLs
pour obtenir le OneLink vers lequel vos domaines de clic redirigent les utilisateurs. - Cette méthode API reçoit une liste de domaines que le plug-in vient résoudre.
- Le code suivant vous permet d'utiliser votre domaine de clic tout en conservant les fonctionnalités de OneLink :
Exemple
AppsFlyer.setResolveDeepLinkURLs("example.com", "click.example.com");
Maintenant, utilisez les données de ce OneLink pour créer un deep link et personnaliser le contenu utilisateur.
Enregistrement des notifications push
Enregistrer les notifications push dans le cadre de campagnes de retargeting.
Pour enregistrer les notifications push :
- Appelez la méthode
sendPushNotificationData
. - Cette méthode se trouve dans la méthode
onCreate
de chaque activité lancée à la suite d'un clic sur la notification :
#if UNITY_ANDROID && !UNITY_EDITOR
AppsFlyerAndroid.handlePushNotifications();
#endif
Pour plus d'informations, consultez la mesure des notifications push.
Attribution des invitations utilisateur
Si les utilisateurs de l'app invitent leurs amis et contacts à devenir de nouveaux utilisateurs, ce sera une source de bénéfice.
Attribuer et enregistrer les installations provenant des invitations des utilisateurs au sein de l'app.Attribution des invitations d'utilisateur
Attribution des promotions croisées
La cross-promotion des apps peut entraîner l'installation de nouvelles applications.
Attribuez et enregistrez les installations provenant d'une campagne de cross-promotion — faites la promotion de l'une de vos apps depuis une autre que vous possédez, et qui a été déjà lancée par un utilisateur. Attribution de la cross-promotion.
11. Identifiants utilisateur
Obtenez un ID AppsFlyer
Un identifiant AppsFlyer est créé pour chaque nouvelle installation d'une app. Utilisez l'ID AppsFlyer pour :
- Envoyez des événements in-app serveur à serveur.
- Faites correspondre l'ID aux enregistrements d'utilisateurs dans vos systèmes en arrière-plan.
- Mappez les entrées lors de la fusion des données de l'API Pull et de l'API Push.
Pour obtenir l'ID AppsFlyer unique :
string AppsFlyerUID = AppsFlyer.getAppsFlyerId();
Définir l'ID Utilisateur-Client
Définissez votre ID utilisateur client unique (CUID) et recoupez-le avec un ID AppsFlyer unique.
CUID unique :
- Apparaît dans les rapports CSV de données brutes d'AppsFlyer.
- Peut être utilisé dans les API de postback pour les croiser avec vos ID internes.
Pour définir le CUID, utilisez :
AppsFlyer.setCustomerUserId("someId");
Bonnes pratiques !Définissez le CUID au début du flux de l'application — il est associé uniquement aux évènements rapportés après son installation.
Call setCustomerUserId
before calling startSDK
- Les événements enregistrés seront associés au CUID.
- Les données associées apparaîtront dans les rapports de données brutes pour les installations et les événements.
AppsFlyer.setCustomerUserId("someId");
Obtenir l'ID utilisateur du client
Consultez CUID pour plus d'informations.
Délai d'initialisation du plug-in pour customerUserID
Définissez d'abord l'ID utilisateur client unique (CUID) puis initialisez le SDK. Ceci vous garantit que les données d'installation et d'événement contiennent bien votre CUID.
Consultez les instructions relatives au système d'exploitation :
Avertissement
Ne retardez le réglage du CUID que si cela répond au fonctionnement de votre entreprise. Si vous retardez le réglage du CUID, cela peut augmenter le risque d'écarts de mesure, et exposer votre app à des tentatives de fraude.
Collecter l'OAID
OAID est l'un des identifiants d'appareil uniques qui permet l'attribution.
Pour collecter l'OAID :
Par défaut, l'OAID est collecté automatiquement. Pour désactiver la collecte automatique, appelez AppsFlyerAndroid.setCollectOaid(false);
.
- Téléchargez l'AAR délivré par l'alliance MSA.
- Ajoutez l'aar que vous avez téléchargé dans le dossier Assets/Plugins/Android.
- Pour les appareils Huawei, ajoutez le lib
hms-ads-identifier
dans le dossier Assets / Plugins / Android. - Ajoutez appsflyer-oaid à votre projet. Cette action peut être réalisée en ajoutant l'aar au dossier Assets/Plugins/Android ou en ajoutant ce qui suit au fichier Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml :
<androidPackage spec="com.appsflyer:oaid:5.2.0">
</androidPackage>
12. Confidentialité des utilisateurs
Exclusion
Il exemple différents cas, comme ceux en rapport avec la réglementation légale ou le respect de la vie privée, qui peuvent obliger à désactiver et stopper tout enregistrement (tracking)
Bonnes pratiques Suivez les instructions exactes du scénario qui correspond à votre application.
Pour arrêter le suivi :
- Appelez stopSDK et définissez-le sur true.
AppsFlyer.stopSDK(true);
- Le plug-in cesse de fonctionner et ne communique plus avec les serveurs AppsFlyer.
Pour réactiver le suivi : appelez stopSDK et définissez-le sur false.
Attention
Utilisez l'API stopSDK si vous souhaitez arrêter totalement le suivi d'un utilisateur d'app en particulier. L'utilisation de l'API impacte fortement l'attribution, la collecte des données et les opérations de deep linking.
Anonymisation des données de l'utilisateur
Pour anonymiser un utilisateur d'application :
- Définissez l'API lors de l'initialisation du SDK
- Appelez
anonymizeUse
et définissez-le sur true.
AppsFlyer.anonymizeUser(true);
- Les installations, les évènements et les sessions d'un utilisateur sont anonymisés.
Pour redémarrer le suivi : appelez anonymizeUser
et définissez-le 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.Exclure les partenaires de l'obtention de données
Dans certains cas, les annonceurs peuvent choisir de cesser le partage de données de niveau utilisateur avec des réseaux publicitaires/partenaires pour certains utilisateurs. Parmi les motifs on retrouve :
- Les politiques de confidentialité telles que la CCPA ou le RGPD
- Les mécanismes de retrait des utilisateurs
- La concurrence avec certains partenaires (ad networks, tiers)
AppsFlyer fournit deux méthodes d'API pour arrêter le partage de données avec l'ensemble des partenaires ou avec certains d'entre eux :
- setSharingFilter: utilisé par les annonceurs pour déterminer quels (un ou plusieurs) réseaux/partenaires intégrés seront exclus de l'obtention des données.
- setSharingFilterForAllPartners: utilisé par les annonceurs pour exclure tous les réseaux/partenaires de l'obtention des données.
Ces méthodes de filtrage sont prises en charge à partir de la version 5.4.1 du SDK.
La méthode de filtrage doit être appelée à chaque fois que le SDK est initialisé et affecte la session entière. Si un délai est requis pour déterminer si vous devez définir les filtres de partage, mieux vaut retarder l'initialisation du SDK.
Lorsque la méthode est activée avant le premier appel de startSDK :
- Les utilisateurs des SRN sont attribués comme organiques, et leurs données ne sont pas partagées avec les partenaires intégrés.
- Les utilisateurs des réseaux publicitaires par clic (non-SRN) sont attribués correctement dans AppsFlyer, mais ne sont pas partagés avec ceux-ci via postback, API, rapport de données brutes, ou toute autre méthode.
Actuellement, les données de désinstallation ne peuvent pas être filtrées à l'aide de ces méthodes. Vous pouvez toutefois arrêter d'envoyer des événements de désinstallation aux partenaires en utilisant leurs pages de configuration dans AppsFlyer.
Les API Android et iOS
initSDK
Description |
Initialise le plug-in avec la clé dev ainsi que l'id d'app. La clé dev est requise pour toutes les apps. L'id d'app est requis pour IOS uniquement. Si votre app est sous Android exclusivement, indiquez "null" pour l'id de l'app.Le game object contient l'interface IAppsFlyerConversionData. |
Signature de la méthode |
|
Exemple |
|
startSDK
Description |
Une fois cette API invoquée, le SDK démarrera, les sessions seront immédiatement envoyées et toutes les transitions d'arrière-plan et d'avant-plan enregistreront une session. |
Signature de la méthode |
|
Exemple |
|
sendEvent
Description |
L'enregistrement des événements in-app est effectué en appelant sendEvent avec le nom de l'événement et les paramètres de valeur. |
Signature de la méthode |
|
Exemple |
|
stopSDK
Description |
Certains cas de force majeur pourront vous obliger à stopper toute fonction du SDK afin de vous conformer aux réglementations en matière de vie privée. Pour ce faire, vous devrez utiliser l'API stopSDK. Une fois invoqué, le SDK ne communiquera plus avec les serveurs AppsFLyer et cessera de fonctionner. |
Signature de la méthode |
|
Exemple |
|
isSDKStopped
Description |
Si l'API stopSDK (booléenne) était réglée sur true. |
Signature de la méthode |
bool isSDKStopped() |
Exemple |
|
getSdkVersion
Description |
Permet d'obtenir la version du SDK AppsFlyer |
Signature de la méthode |
|
Exemple |
|
setIsDebug
Description |
Active les journaux de débogage |
Signature de la méthode |
|
Exemple |
|
Définir l'ID Utilisateur-Client
Description |
Définir l'ID utilisateur du client (CUID). |
Signature de la méthode |
|
Exemple |
|
setAppInviteOneLink
Description |
Définir l'ID du modèle OneLink utilisé pour créer des liens d'attribution personnalisés pour les invitations utilisateur. |
Signature de la méthode |
|
Exemple |
|
setAdditionalData
Description |
Ajouter des données supplémentaires à envoyer aux plates-formes partenaires externes. |
Signature de la méthode |
|
Exemple |
|
setResolveDeepLinkURLs
Description |
Résoudre OneLink depuis les domaines de clic. Pour plus d’informations, consultez Résoudre les URL Deep Link encapsulées. |
Signature de la méthode |
|
Exemple |
|
setOneLinkCustomDomain
Description |
Les annonceurs peuvent utiliser cette méthode pour définir des domaines vanity OneLink. |
Signature de la méthode |
|
Exemple |
|
setcurrencyCode
Description |
A utiliser pour les événements générant des revenus. Accepte les codes de devise ISO. |
Signature de la méthode |
|
Exemple |
|
recordLocation
Description |
Enregistrer manuellement la situation géo de l'utilisateur |
Signature de la méthode |
|
Exemple |
|
anonymizeUser
Description |
Utilisé lors de l'initialisation pour rendre explicitement anonymes l'installation, les événements et les sessions de l'utilisateur. Pour désactiver l'anonymat, appelez à nouveau anonymizeUser, et définissez-le sur false. |
Signature de la méthode |
|
Exemple |
|
getAppsFlyerId
Description |
Permet d'obtenir l'identifiant unique AppsFlyer pour une nouvelle installation. |
Signature de la méthode |
|
Exemple |
|
setMinTimeBetweenSessions
Description |
Par défaut, il doit se passer au moins 5 secondes entre 2 lancements d'app pour qu'elles soient considérées comme des sessions distinctes. Définissez une valeur personnalisée pour fixer la durée minimum entre chaque sessions. |
Signature de la méthode |
|
Exemple |
|
setUserEmails
Description |
Définissez les e-mails des utilisateurs et chiffrez-les. |
Signature de la méthode |
|
Exemple |
|
setHost
Description |
Définir un hôte personnalisé |
Signature de la méthode |
|
Exemple |
|
getConversionData
Description |
Permet d'enregistrer un port d'écoute des données de conversion afin d'autoriser l'accès aux données d'attribution de l'utilisateur en temps réel pour chaque nouvelle installation, et ce directement au niveau du SDK. Vous pourrez ainsi offrir aux utilisateurs un contenu personnalisé ou bien les diriger vers des activités spécifiques à l'app, ce qui pourra renforcer considérablement leur engagement vis-à-vis de votre app. |
Signature de la méthode |
|
Exemple |
|
attributeAndOpenStore
Description |
Pour attribuer le clic et lancer la page de l'application vers l'app store. |
Signature de la méthode |
|
Exemple |
|
recordCrossPromoteImpression
Description |
Pour attribuer une impression, utilisez l'appel d'API suivant. Assurez-vous d'utiliser l'id de l'app au centre de la promotion tel qu'il apparaît dans le tableau de bord d'AppsFlyer. |
Signature de la méthode |
|
Exemple |
|
generateUserInviteLink
Description |
La classe LinkGenerator génère l'URL d'invitation selon différentes méthodes de paramétrage, ce qui permet de transmettre d'autres données concernant le clic. |
Signature de la méthode |
|
Exemple |
|
onAppOpenAttribution
Description |
Obtenir des données de deep linking lorsqu'une application s'ouvre via un deep link. |
Signature de la méthode |
|
Exemple |
|
onAppOpenAttributionFailure
Description |
Récupère les erreurs provenant de l'obtention des données de deep linking. |
Signature de la méthode |
|
Exemple |
|
onConversionDataSuccess
Description |
Méthode utilisée pour obtenir les données de conversion. Utile pour le deep linking différé. En savoir plus.
|
Signature de la méthode |
|
Exemple |
|
onConversionDataFail
Description |
Gère les erreurs lors de l'échec de l'obtention des données de conversion des installations. |
Signature de la méthode |
|
Exemple |
|
onInviteLinkGenerated
Description |
Callback de confirmation de la génération d'URL OneLink. |
Signature de la méthode |
|
Exemple |
|
onInviteLinkGeneratedFailure
Description |
Callback d'échec de la génération d'URL OneLink. |
Signature de la méthode |
|
Exemple |
|
didFinishValidateReceipt
Description |
Callback de confirmation de l'API validateAndSendInAppPurchase. Pour Android : le callback renvoie « Validate success » (Validation réussie). |
Signature de la méthode |
|
Exemple |
|
didFinishValidateReceiptWithError
Description |
Callback d'échec pour la validation des reçus. |
Signature de la méthode |
|
Exemple |
|
setPhoneNumber
Description |
Permet de définir le numéro de téléphone de l'utilisateur. |
Signature de la méthode |
|
Exemple |
|
setSharingFilterForAllPartners
Description |
Utilisée par les annonceurs pour exclure tous les réseaux/partenaires intégrés de l'obtention de données. En savoir plus |
Signature de la méthode |
|
Exemple |
|
setSharingFilter
Description |
Utilisé par les annonceurs pour configurer quels (un ou plusieurs) réseaux/partenaires intégrés exclure de l'obtention des données.En savoir plus |
Signature de la méthode |
|
Exemple |
|
Les API Android
updateServerUninstallToken
Description |
Permet de définir manuellement le jeton d'appareil Firebase pour les mesures de désinstallation. |
Signature de la méthode |
|
Exemple |
|
setImeiData
Description |
Pour envoyer explicitement l'IMEI à AppsFlyer. |
Signature de la méthode |
|
Exemple |
|
setAndroidIdData
Description |
Pour envoyer explicitement l'ID Android à AppsFlyer. |
Signature de la méthode |
|
Exemple |
|
waitForCustomerUserId
Description |
Cette fonctionnalité permet de s'assurer que le SDK ne commence pas avant d'avoir obtenu le customerUserID. |
Signature de la méthode |
|
Exemple |
|
setCustomerIdAndStartSDK
Description |
Permet d'indiquer au SDK l'ID utilisateur-client approprié et enclenche l'activité normale du SDK. |
Signature de la méthode |
|
Exemple |
|
getOutOfStore
Description |
Récupère la valeur AF_STORE en cours. |
Signature de la méthode |
|
Exemple |
|
setOutOfStore
Description |
Permet de définir manuellement la valeur AF_STORE. |
Signature de la méthode |
|
Exemple |
|
setCollectAndroidID
Description |
Désactive la collecte des ID Android. Si l'application ne contient PAS les services Google Play, l'identifiant Android est collecté par le SDK. Cependant, les applications dotées de services Google Play doivent éviter de collecter les ID Android, étant donné que cela vient enfreindre la politique de Google Play. |
Signature de la méthode |
|
Exemple |
|
setCollectIMEI
Description |
Désactive la collecte des IMEI. Si l'application ne contient PAS les services Google Play, l'IMEI de l'appareil est collecté par le plug-in. Cependant, les applications dotées de services Google Play doivent éviter de collecter les IMEI, étant donné que cela vient enfreindre la politique de Google Play. |
Signature de la méthode |
|
Exemple |
|
setIsUpdate
Description |
Permet de définir manuellement que l'app a été mise à jour. |
Signature de la méthode |
|
Exemple |
|
setPreinstallAttribution
Description |
Pour indiquer le nom du fabricant ou de la source média à qui la pré-installation est attribuée. |
Signature de la méthode |
|
Exemple |
|
isPreInstalledApp
Description |
Indicateur booléen à pré-installer par le fabricant. |
Signature de la méthode |
|
Exemple |
|
getAttributionId
Description |
Produit l'identifiant d'attribution Facebook, s'il existe. |
Signature de la méthode |
|
Exemple |
|
handlePushNotifications
Description |
Permet d'enregistrer les notifications push. |
Signature de la méthode |
|
Exemple |
|
validateAndSendInAppPurchase
Description |
Une API pour la vérification par le serveur des achats intégrés. Un événement af_purchase avec les bonnes valeurs sera automatiquement envoyé si la vérification est est réussie. |
Signature de la méthode |
|
Exemple |
|
API iOS
setShouldCollectDeviceName
Description |
Réglez ce drapeau sur true pour collecter le nom de l'appareil en cours (par exemple "Mon iPhone"). La valeur par défaut est false. |
Signature de la méthode |
|
Exemple |
|
setDisableCollectIAd
Description |
Désactivation de l'attribution des Apple Search Ads. |
Signature de la méthode |
|
Exemple |
|
setUseReceiptValidationSandbox
Description |
Validation de réception des achats in-app sous environnement Apple (production ou sandbox). La valeur par défaut est false. |
Signature de la méthode |
|
Exemple |
|
setUseUninstallSandbox
Description |
Définissez cet drapeau pour tester la désinstallation sous environnement Apple (production ou sandbox). La valeur par défaut est false. |
Signature de la méthode |
|
Exemple |
|
validateAndSendInAppPurchase
Description |
Pour envoyer et valider des achats in-app, appelez cette méthode depuis la méthode processPurchase. |
Signature de la méthode |
|
Exemple |
|
registerUninstall
Description |
Permet de s'inscrire pour la notification à distance et fournit à AppsFlyer le jeton de l'appareil push. |
Signature de la méthode |
|
Exemple |
|
handleOpenUrl
Description |
Permet de suivre manuellement le deep linking. |
Signature de la méthode |
|
Exemple |
|
onOpenStoreLinkGenerated
Description |
Vous permet d'utiliser le composant StoreKit pour ouvrir l'App Store sans quitter le contexte de votre app. En savoir plus. |
Signature de la méthode |
|
Exemple |
|
disableSKAdNetwork
Description |
Vous permet de désactiver l'attribution du SKAdNetwork. Réglez sur "true" pour désactiver. |
Signature de la méthode |
|
Exemple |
|
waitForATTUserAuthorizationWithTimeoutInterval
Description |
À utiliser si vous souhaitez demander l'autorisation de l'utilisateur dans un popup avant d'accéder aux données liées à l'app pour enregistrer soit l'utilisateur, soit le dispositif (par exemple, IDFA) Si l'utilisateur accepte, l'IDFA sera transmis au SDK.L'intervalle de temporisation donne à l'utilisateur un délai déterminé pour accepter la collecte de l'IDFA. Après l'expiration du délai, l'IDFA n'est pas collectée. |
Signature de la méthode |
|
Exemple |
|