En bref : AppsFlyer envoie des notifications push silencieuses une fois par jour pour vérifier que les applications sont toujours installées sur l'appareil des utilisateurs, puis comptabilise les événements de désinstallation sur une app donnée, en les attribuant à une source média spécifique.AppsFlyer fournit les données brutes de désinstallation sous la forme d'un rapport téléchargeable, d'API Pull et de Data Locker.
Avantages de la mesure des désinstallations
-
Comparer la qualité des sources média
Le taux de désinstallations est une mesure qui peut vous aider à comparer la qualité des utilisateurs que vous avez acquis auprès de différentes sources média, campagnes, annonces uniques ou même de pays. -
Protéger la confidentialité des utilisateurs
De nombreux annonceurs organisent des campagnes de réengagement pour fidéliser leurs utilisateurs. Cependant, cela pourrait aller à l'encontre des conditions d'utilisation de l'App Store. Si tel est le cas, utilisez les données de désinstallation pour supprimer les programmes de désinstallation des audiences reciblées.
Systèmes d'exploitation
La prise en charge de la mesure des désinstallations nécessite un certain développement dans vos apps.
Voici les instructions du développeur pour :
Astuce
Combien d'utilisateurs désinstallent des applications et quand ?
Obtenez la répartition complète par catégorie/pays ici.
Important
Starting May 29, 2019, Google removed the GCM server and client APIs. If you are integrating messaging in a new app, use FCM. If you use GCM, upgrade to FCM. After you upgrade to FCM follow the instructions in this article to set up uninstall measurement for Android.
Suivez la documentation de Google pour en savoir plus :
Mesure des désinstallations Android
La mesure des désinstallations à l'aide de la messagerie Firebase est prise en charge à partir du SDK Android version 4.7.0.
1. Obtenir la clé de serveur Firebase
- Créez un projet d'app Android Firebase (si ce n'est pas déjà fait), ou migrez votre projet de la console développeur Google (suivez les instructions ci-dessous). Pour plus d'informations, rendez-vous sur Firebase.
- Ouvrez la Console Firebase.
- Sur la page Console Firebase, accédez aux paramètres du projet (cliquez sur la roue dentée à côté de Vue d'ensemble du projet dans le volet gauche de la page).
- Sous l'onglet Cloud Messaging, vous verrez les deux clés de serveur (cf capture d'écran ci-dessous) :
- Copiez la clé de serveur.
2. Saisir la clé de serveur sur le tableau de bord AppsFlyer
- Accédez au tableau de bord de votre app sur la plate-forme AppsFlyer.
- Sélectionnez Paramètres d'app dans le menu de gauche.
- Définissez la clé de serveur Firebase à l'aide de la clé de serveur que vous venez de copier.
3. Configurer Firebase Messaging sur votre app
- Téléchargez google-services.json depuis la console Firebase.
- Ajoutez le fichier google-services.json au répertoire du module de votre app
- Ajoutez des règles à votre fichier build.gradle de niveau racine pour inclure le plug-in google-services :
buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:4.2.0' // google-services plugin } }
- Ajoutez la dépendance FCM à votre fichier build.gradle de niveau application :
dependencies { implementation 'com.google.firebase:firebase-messaging:17.3.4' } // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services
La dernière version de Firebase est disponible ici : Firebase official doc.
Si vous recevez une erreur « Impossible de trouver... », assurez-vous d'avoir le dernier référentiel Google dans le gestionnaire SDK Android.
4. Implémenter le service de mesure des désinstallations AppsFlyer
Si un développeur intègre FCM dans le seul but de mesurer les désinstallations avec AppsFlyer, il peut utiliser le service appsFlyer.FirebaseMessagingServiceListener inclus dans notre SDK.
Cela se fait en ajoutant le service à AndroidManifest.xml :
<application
<!-- ... -->
<service
android:name="com.appsflyer.FirebaseMessagingServiceListener">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<!-- ... -->
</application>
Le service appsflyer.FirebaseMessagingServiceListener étend la classe <>FirebaseMessagingService de Firebase, qui est utilisée afin de recevoir le jeton d'appareil de Firebase.
import com.appsflyer.AppsFlyerLib;
import com.google.firebase.messaging.FirebaseMessagingService;
public class MyNewFirebaseManager extends FirebaseMessagingService {
@Override
public void onNewToken(String s) {
super.onNewToken(s);
// Sending new token to AppsFlyer
AppsFlyerLib.getInstance().updateServerUninstallToken(getApplicationContext(), s);
// the rest of the code that makes use of the token goes in this method as well
}
}
Ce service doit être ajouté à AndroidManifest.xml pour fonctionner : si l'application utilisait FCM avant l'intégration du SDK AppsFlyer, il est probable que ce service ait déjà été étendu et le développeur devra juste ajouter la ligne suivante à la méthode onNewToken()
:
AppsFlyerLib.getInstance().updateServerUninstallToken(getApplicationContext(), refreshedToken);
Assurez-vous également d'avoir ajouté le service approprié au fichier AndroidManifest.xml :
<service
android:name=".MyNewFirebaseManager">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Résolution de la notification push de désinstallation d'Android non silencieuse
Le remplacement de la méthode onMessageReceived
de Firebase et l'implémentation de votre propre logique peuvent empêcher les notifications push de désinstallation de rester silencieuses. Cela peut avoir un impact sur l'expérience utilisateur. Pour éviter cela, vérifiez si le message contient af-uinstall-tracking
. Voir l'exemple suivant :
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if(remoteMessage.getData().containsKey("af-uinstall-tracking")){
return;
} else {
// handleNotification(remoteMessage);
}
}
5. Utiliser ProGuard avec la fonctionnalité Mesure des désinstallations
Si vous utilisez ProGuard, ajoutez la règle suivante :
-dontwarn com.appsflyer.**
-keep public class com.google.firebase.messaging.FirebaseMessagingService {
public *;
}
6. Tester la mesure des désinstallations Android
La métrique Désinstallations est disponible dans la vue d'ensemble du tableau de bord.
La liste des utilisateurs qui désinstallent l'app est disponible dans les rapport de données brutes des désinstallations.
Pour tester la mesure des désinstallations Android :
- Installez l'app.
-
Désinstallez l'app. Remarque! Vous pouvez désinstaller l'application immédiatement après l'avoir installée.
L'événement de désinstallation s'enregistre dans les 24 heures si la mesure de désinstallation est traitée au quotidien.
Si l'application est réinstallée durant cette période - aucun événement de désinstallation ne sera enregistré.
L'événement de désinstallation de l'app peut prendre jusqu'à 48 heures avant d'apparaître dans les rapports de données brutes et le Rapport de performance agrégé de votre tableau de bord AppsFlyer.
Quel l'app Android soit en direct sur Google Play, en attente de soumission ou même hors store, le test reste le même.
7. Désactiver la mesure des désinstallations
Si une clé de serveur Firebase/GCM est fournie, la mesure de désinstallation de l'app est activée par défaut. Les propriétaires d'app peuvent désactiver cette fonctionnalité via le tableau de bord.
Attention ! Pour qu'une désinstallation soit signalée, la mesure "Activer les désinstallations" doit être activée lors de l'installation de l'app. Les appareils qui ont installé l'app alors que l'option Activer la mesure des désinstallations était désactivée ne signalent pas la désinstallation de l'app.
Désactiver la mesure des désinstallations :
- In AppsFlyer, go to App settings.
- Scroll to Attribution > Uninstalls and turn off Enable uninstall measurement.
Remarque
Les données d'évènement de désinstallation iOS AppsFlyer dépendent du service de notifications Apple Push (APN). Pour des raisons de confidentialité, APN signale en temps réel lorsqu'un utilisateur supprime une application uniquement si au moins huit jours se sont écoulés depuis l'installation. Toutes les données de désinstallation sont disponibles à partir du jour 8.
Cliquez ici pour en savoir plus.
Mesure des désinstallations iOS
Important !
Pour utiliser cette fonctionnalité, vous devez posséder la version SDK 4.5.0 ou ultérieure. Si vous souhaitez mesurer les désinstallations sur iOS 13 ou versions suivantes, vous devez disposer de la SDK 4.10.4 ou ultérieure.
Cette fonctionnalité nécessite également un certificat p12. Les certificats p8 ne sont pas pris en charge.
Remarque
La mesure des désinstallations n'est pas possible pour les utilisateurs qui n'autorisent pas les notifications push.
1. Trouver votre app
2. Si vous n'avez pas encore enregistré un ID d'app, cliquez sur le symbole + et remplissez le formulaire.
3. Cochez la case Notifications push.
4. Lorsque vous développez l'application, deux paramètres de notifications push apparaissent avec des icônes d'état jaune ou verte :
5. Cliquez sur Paramètres pour continuer.
Remarque
Le bouton Paramètres peut être intitulé Modifier si les notifications push ont été configurées précédemment. Si le bouton Paramètres/Modifier n'est pas disponible, vous n'êtes peut-être pas un agent de l'équipeou un administrateur. La personne qui a initialement créé le compte développeur est votre agent d'équipe. C'est lui qui doit effectuer le reste des étapes de cette section.
2. Générer votre certificat
1. Sélectionnez SSL du service de notifications push Apple (Sandbox et Production) dans l'option Certificat de production. Si vous utilisez la VoIP pour les notifications push, sélectionnez Certificat des services VoIP.
2. Cliquez sur Créer un certificat à partir de l'option Certificat SSL de production.
3. Après avoir cliqué sur Créer un certificat, prenez note de l'option Ajouter un assistant de certificat iOS. Suivez les instructions dans l'assistant, puis cliquez sur Continuer.
4. À l'aide de la demande de signature du certificat venant d'être créé, générez le certificat SSL push APNS.
5. Attendez l'affichage du bouton Télécharger pour télécharger. Rechargez la page pour afficher ce bouton. Téléchargez le nouveau certificat :
6. Ouvrez le certificat. Cette action ouvre Keychain Access.
Dans Keychain Access, votre certificat apparaît sous Mes certificats. Si ce n'est pas le cas, vérifiez dans Certificats pour voir s'il s'y trouve.
Remarque
Seuls les administrateurs de compte peuvent télécharger ou modifier le certificat p12.
3. Renouveler votre certificat
Si vous renouvelez votre certificat SSL push de développement ou de production, suivez les étapes ci-dessus, comme si vous téléchargiez le certificat pour la première fois. Il n'est pas nécessaire de révoquer le précédent certificat pour effectuer cette modification. Il peut y avoir deux certificats de production en même temps, pour vous permettre de continuer à utiliser l'ancien certificat pendant le téléchargement du nouveau.
4. Exporter le fichier P12
La dernière étape avant de retourner au tableau de bord AppsFlyer est d'enregistrer votre certificat de signature sous la forme d'un fichier .p12.
1. Sélectionnez le certificat venant d'être ajouté à Keychain Access.
2. Rendez-vous dans Fichier > Exporter des éléments.
3. Sélectionnez Mes certificats sous le menu Catégorie sur le côté inférieur gauche.
Si Mes certificats n'est pas sélectionnable, vous ne pouvez pas exporter le certificat sous la forme d'un fichier .p12.
3. Lorsque vous enregistrer le fichier, utilisez le format Échange d’informations personnelles (.p12) .
4. Assurez-vous qu'il indique Apple Push Services et qu'il se présente comme suit :
5. Allez au tableau de bord de votre app sur la plate-forme AppsFlyer.
6. Sélectionnez Paramètres d'app dans le menu de gauche.
7. Cliquez sur l'icône de téléchargement, sélectionnez le fichier P12 à téléverser.
8. (facultatif) Si le certificat P12 est protégé par un mot de passe, saisissez le mot de passe dans Mot de passe Certificat P12.
9. Cliquez sur Valider pour envoyer le certificat à AppsFlyer pour vérifier qu'il est valide.
10. Cliquez sur Enregistrer les paramètres.
5. intégration avec le SDK
Les notifications push doivent être enregistrées au niveau du code de l'app pour permettre la collecte des données de désinstallation.
//add UserNotifications.framework
import UserNotifications
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//...
// iOS 10 support
if #available(iOS 10, *) {
UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]){ (granted, error) in }
application.registerForRemoteNotifications()
}
// iOS 9 and iOS 8 support
else if #available(iOS 8, *), #available(iOS 9, *) {
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
UIApplication.shared.registerForRemoteNotifications()
}
// iOS 7 support
else {
application.registerForRemoteNotifications(matching: [.badge, .sound, .alert])
}
return true
}
// Called when the application sucessfuly registers for push notifications
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
AppsFlyerTracker.shared().registerUninstall(deviceToken)
}
Ajoutez le code suivant à votre AppDelegate.m :
- #import <UserNotifications/UserNotifications.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// The userNotificationTypes below is just an example and may be changed depending on the app
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error) {
}];
[[UIApplication sharedApplication] registerForRemoteNotifications];
// if you do not use push notificaiton in your app, uncomment the following line
//application.applicationIconBadgeNumber = 0;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[[AppsFlyerTracker sharedTracker] registerUninstall:deviceToken];
}
}
Dans AppDelegate.h, insérez le code suivant pour ajouter UNUserNotificationCenterDelegate à la déclaration d'interface :
#import <AppsFlyerLib/AppsFlyerTracker.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, AppsFlyerTrackerDelegate>
Les extraits de code ci-dessus nécessitent les autorisations de l'utilisateur pour l'envoi des notifications push. Cependant, si vous utilisez les notifications push en mode d'arrière plan uniquement pour mesurer les désinstallations, l'approbation utilisateur n'est pas nécessaire. En effet, ces notifications push sont silencieuses et ne nécessitent pas de demander l'autorisation à l'utilisateur.
Autorisation de l'utilisateur pour les notifications push en mode arrière-plan
Si vous utilisez uniquement des notifications push silencieuses, veillez à activer les Notifications distantes dans les Modes d'arrière-plan des Fonctionnalités de votre app :
- Dans XCode, sélectionnez votre projet
- Sélectionnez la cible
- Accédez à l'onglet Fonctionnalités
- Activez les Modes d'arrière-plan
- Cochez Notifications distantes
6. Notifications push
Assurez-vous d'ajouter Notification push à votre onglet de capacités XCode. Sans cela, le deviceToken ne sera pas recueilli.
7. Tester les désinstallations
Pour tester la mesure des désinstallations IOS :
- Installez l'app.
- Désinstallez l'application. Remarque ! Vous pouvez désinstaller l'application immédiatement après l'avoir installée.
Lorsque vous testez les désinstallations de Xcode ou TestFlight, il est important d'informer notre SDK que le jeton est généré depuis un environnement Sandbox. Utilisez les API suivantes :
AppsFlyerTracker.shared().useUninstallSandbox = true
[AppsFlyerTracker sharedTracker].useUninstallSandbox = true;
Attention ! Les désinstallations n'apparaissent pas immédiatement dans le tableau de bord AppsFlyer :
- Il faut compter en moyenne 9 jours pour que les désinstallations apparaissent dans les rapports
- Cela peut prendre plus d'un mois avant que les désinstallations provenant d'environnements Sandbox ne s'affichent dans les rapports
De plus, la date de désinstallation correspond au jour où la désinstallation a été rapportée. Consultez la section suivantes pour en savoir plus.
8. Visualisation des données de désinstallation dans le tableau de bord AppsFlyer
La mesure des désinstallations est affichée sur le tableau de bord principal dans le tableau de performance agrégé.
En raison d'un changement récent du service de notifications push Apple, il faut un minimum de 9 jours pour que les désinstallations apparaissent sur le tableau de bord. AppsFlyer met à jour et regroupe les métriques des désinstallations toutes les 24 heures
Exemple
- Jour 1 - un utilisateur installe votre app
- Jour 4 - l'utilisateur désinstalle votre app
- Jour 12 - le service de notifications push signale la suppression de l'application 8 jours après la désinstallation
- Jour 13 - les données de désinstallation apparaissent sur le tableau de bord AppsFlyer et les données brutes
Pour plus de détails, reportez-vous à la section Mesurer les désinstallation d'app iOS du guide d'intégration SDK.
9. Désactiver la mesure des désinstallations
Si un certificat P12 est fourni et validé, la mesure de désinstallation de l'app est activée par défaut. Les propriétaires d'app peuvent désactiver cette fonctionnalité via le tableau de bord.
Attention ! Pour qu'une désinstallation soit signalée, la mesure "Activer les désinstallations" doit être activée lors de l'installation de l'app. Les appareils qui ont installé l'app alors que l'option Activer la mesure des désinstallations était désactivée ne signalent pas la désinstallation de l'app.
Désactiver la mesure des désinstallations :
- In AppsFlyer, go to App settings.
- Scroll to Attribution > Uninstalls and turn off Enable uninstall measurement.
Postbacks d'évènement de désinstallation
AppsFlyer vous permet d'envoyer aux partenaires avec lesquels vous travaillez un postback d'évènement de désinstallation pour chaque utilisateurs connu procédant à une désinstallation. L'évènement de désinstallation porte le nom af_uninstall
dans le tableau de bord AppsFlyer.
Mappage de l'évènement de désinstallation
Vous pouvez mapper l'évènement af_uninstall
comme vous le feriez pour n'importe quel évènement in-app de votre app.
Comme pour n'importe quel évènement in-app, AppsFlyer peut envoyer le postback uniquement si l'évènement a réellement lieu et a été enregistré par AppsFlyer. Par conséquent, le mappage d'af_uninstall fonctionne uniquement pour les implémentations de désinstallation terminées. Si aucune désinstallation ne figure sur la page de présentation ou dans les rapports de données brutes des désinstallations, aucun postback de désinstallation n'est transmis aux partenaires, même si vous avez mappé l'évènement af_uninstall
.
Timing d'af_uninstall
Contrairement aux postbacks pour les événements in-app réguliers, l'événement af_uninstall
n'est pas envoyé en temps réel.
Dans les données brutes d'AppsFlyer et les postbacks des partenaires, l'heure de l'événement enregistré af_uninstall
est l'heure à laquelle AppsFlyer est informé de la désinstallation.
- Pour les appareils Android : 24 à 48 heures après la désinstallation effective de l'app
- Pour les appareils iOS : 9 à 11 jours après la désinstallation de l'app
Limites
Les événements af_uninstall ne sont pas inclus dans les rapports de postbacks d'évènements in-app.
L'évènement af_uninstall n'est actuellement pas disponible pour tous les partenaires.
Si vous souhaitez le mapper avec un partenaire, mais que l'évènement n'est pas disponible pour le partenaire, contactez votre responsable clientèle dédié ou écrivez à hello@appsflyer.com.
Si vous êtes un partenaire et souhaitez recevoir les évènements af_uninstall, contactez votre PDM dédié ou écrivez à partners@appsflyer.com.