De un vistazo: AppsFlyer utiliza notificaciones push silenciosas una vez al día para verificar que las aplicaciones siguen instaladas en los dispositivos del usuario, y cuenta los eventos de desinstalación que ocurren para una aplicación específica, atribuyéndolos a una fuente de medios específica. AppsFlyer suministra el raw data de la desinstalación a través de un reporte descargable, Pull API y Data Locker.
Ventajas de la medición de desinstalaciones
-
Compara la calidad de las fuentes de medios
La tasa de desinstalaciones es una métrica que te puede ayudar a comparar la calidad de los usuarios que adquieres de distintas fuentes de medios, campañas, anuncios específicos o países. -
Protege la privacidad de tus usuarios
Muchos anunciantes llevan a cabo campañas de re-engagement para retener a sus usuarios. Sin embargo, hacerlo puede contradecir los términos de uso de la tienda de aplicaciones. Si este es el caso, usa los datos de desinstalación para eliminar los desinstaladores de audiencias reorientadas.
Sistemas operativos
La compatibilidad con la función de medición de desinstalaciones requiere cierto desarrollo en tus aplicaciones.
Estas son las instrucciones para desarrolladores para realizar lo siguiente:
Consejo
¿Cuántos usuarios desinstalan aplicaciones y cuándo?
Obtén el desglose completo de la categoría o el país aquí.
Importante
A partir del 29 de mayo de 2019, Google eliminó el servidor de mensajería en nube de Google (GCM) y las API de clientes. Si deseas integrar la mensajería en una aplicación nueva, usa FCM. Si usas GCM, actualiza a FCM. Después de actualizar a FCM, sigue las instrucciones de este artículo para configurar la medición de desinstalaciones para Android.
Lea la documentación de Google para obtener más información:
Medición de desinstalaciones Android
La medición de desinstalaciones mediante la Mensajería Firebase se admite a partir de la versión 4.7.0. del SDK para Android.
1. Cómo obtener la clave de servidor de Firebase
- Crea un proyecto de Aplicación de Firebase para Android (si no lo hiciste antes) o migra tu proyecto desde la Consola para desarrolladores de Google (sigue las instrucciones que figuran allí). Para obtener más información, visita Firebase.
- Abre la Consola de Firebase.
- En la página de la consola Firebase, navega hasta Configuración del proyecto (haz clic en el icono de la rueda dentada junto a Información general en el panel izquierdo de la página).
- En la pestaña Mensajería en la nube, podrás ver tus dos claves de servidor (consulta la captura de pantalla a continuación):
- Copia la clave de servidor.
2. Introducir la Clave de Servidor en el Panel de Control de AppsFlyer
- Ve al panel de control de tu aplicación en la plataforma de AppsFlyer.
- Selecciona la opción Configuración de la aplicación del menú izquierdo.
- Establece la clave de servidor de Firebase con la clave de servidor que acabas de copiar.
3. Configurar Firebase Cloud Messaging en tu aplicación
- Descarga google-services.json de la consola Firebase.
- Agrega google-services.json al directorio de módulos de tu aplicación.
- Agrega reglas a tu archivo build.gradle del nivel de raíz para incluir el plugin (complemento) google-services:
buildscript { // ... dependencies { // ... classpath 'com.google.gms:google-services:4.2.0' // google-services plugin } }
- Agrega la dependencia de FCM a tu archivo build.gradle del nivel de aplicación:
dependencies { implementation 'com.google.firebase:firebase-messaging:17.3.4' } // ADD THIS AT THE BOTTOM apply plugin: 'com.google.gms.google-services
Puedes encontrar la última versión de Firebase aquí: documento oficial de Firebase.
Si recibes un mensaje de error que dice "No se pudo encontrar...", asegúrate de tener el último Repositorio de Google en el Administrador del SDK de Android.
4. Implementación del servicio de medición de desinstalaciones de AppsFlyer
Si un desarrollador integra FCM con el único objetivo de medir desinstalaciones con AppsFlyer, puede utilizar el servicio appsFlyer.FirebaseMessagingServiceListener que está incluido en nuestro SDK.
Para hacer esto, se debe agregar el servicio a AndroidManifest.xml:
<application
<!-- ... -->
<service
android:name="com.appsflyer.FirebaseMessagingServiceListener">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<!-- ... -->
</application>
El servicio appsflyer.FirebaseMessagingServiceListener amplía la clase <>FirebaseMessagingService de Firebase, que se usa para recibir el token de dispositivo 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
}
}
Para funcionar, ese servicio debe agregarse a AndroidManifest.xml: Si la aplicación ya usaba FCM antes de integrar el SDK de AppsFlyer, lo más probable es que este servicio ya se haya ampliado y que el desarrollador solo necesite agregar la siguiente línea al método onNewToken()
:
AppsFlyerLib.getInstance().updateServerUninstallToken(getApplicationContext(), refreshedToken);
Asegúrate también de haber agregado el servicio correspondiente a AndroidManifest.xml:
<service
android:name=".MyNewFirebaseManager">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Resolver que la notificación push de desinstalación de Android no sea silenciosa
Anular el método onMessageReceived
de Firebase e implementar tu propia lógica puede hacer que las notificaciones push de desinstalación no sean silenciosas. Esto puede afectar la experiencia del usuario. Para evitarlo, verifica si el mensaje contiene af-uinstall-tracking
. Mira el siguiente ejemplo:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if(remoteMessage.getData().containsKey("af-uinstall-tracking")){
return;
} else {
// handleNotification(remoteMessage);
}
}
5. Uso de ProGuard con medición de desinstalaciones
Si estás utilizando ProGuard, agrega la siguiente regla:
-dontwarn com.appsflyer.**
-keep public class com.google.firebase.messaging.FirebaseMessagingService {
public *;
}
6. Prueba de medición de desinstalaciones en Android
La métrica de Desinstalaciones está disponible en el panel de control de información general.
La lista de usuarios que desinstalan la aplicación está disponible en el reporte de raw data de desinstalaciones.
Para probar la medición de desinstalaciones en Android:
- Instala la aplicación.
-
Desinstala la aplicación. Nota: Puedes desinstalar la aplicación inmediatamente después de instalarla.
El evento de desinstalación se registra dentro de las 24 horas mientras se procesa la medición de desinstalación a diario.
Si la aplicación se reinstala durante este tiempo, no se registra ningún evento de desinstalación.
El evento de desinstalación de la aplicación tarda hasta 48„horas en aparecer en los reportes de raw data y en el reporte agregado de rendimiento en tu panel de control de AppsFlyer.
Ya sea que la aplicación para Android esté activa en Google Play, pendiente de ser enviada o incluso fuera de la tienda, la prueba es la misma.
7. Desactivar la medición de desinstalaciones
Si se proporciona una clave de servidor de Firebase/Mensajería en nube de Google (GCM), la medición de desinstalaciones de la aplicación está activada de forma predeterminada. Los propietarios de las aplicaciones pueden desactivar esta función a través del panel de control.
Note! For an uninstall to be reported: Enable uninstalls measurement must be on at the time the app is installed. Installs occurring when Enable uninstalls measurement is off aren't reported.
Para desactivar la medición de desinstalaciones:
- En AppsFlyer, ve a Configuración de la aplicación.
- Desplázate hasta Atribución > Desinstalaciones y desactiva Habilitar medición de desinstalaciones.
Nota
Los datos de eventos de desinstalaciones en iOS de AppsFlyer dependen del servicio de notificaciones push de Apple (APN). Por motivos de privacidad, APN reporta en tiempo real cuando un usuario elimina una aplicación solo si han pasado al menos ocho días desde la instalación. Esto significa que los datos de desinstalación de iOS están disponibles solo a partir del 8.º día.
Haz clic aquí para más información.
Medición de desinstalaciones en iOS
¡Importante!
Para usar esta función, debes contar con un SDK de versión 4.5.0 o superior. Si deseas medir las desinstalaciones en iOS 13 y superior, debes tener por lo menos un SDK de versión 4.10.4 o superior.
Esta funcionalidad también requiere un certificado p12. No se admiten certificados p8.
Nota
La medición de desinstalaciones no estará habilitada para usuarios que rechacen los permisos para notificaciones push.
1. Encontrar tu Aplicación
2. Si aún no tienes un ID de Aplicación registrado, haz clic en el símbolo + y completa el formulario.
3. Marca la casilla de notificaciones push.
4. Cuando amplíes la aplicación, verás dos configuraciones de notificaciones push con iconos de estado de color amarillo o verde:
5. Haz clic en Configuración para continuar.
Nota
Es posible que el botón Configuración aparezca con el título Editar si las notificaciones push ya se configuraron antes. Si el botón Configuración/Editar no está disponible, es posible que no seas el agente del equipo o administrador. La persona que originalmente creó la cuenta de desarrollador es el agente de tu equipo y es quien llevará a cabo el resto de los pasos de esta sección.
2. Generar tu certificado
1. Seleccione la opción de certificado SSL de servicio de notificaciones push de Apple (Sandbox y Production) en la sección Producción. Si va a usar VoIP para las notificaciones push, seleccione Certificado de servicios VoIP.
2. Haz clic en Crear Certificado desde la opción Certificado SSL de Producción.
3. Después de hacer clic en Crear Certificado, presta atención al Asistente para Agregar Certificado en iOS. Sigue las instrucciones del asistente y, a continuación, haz clic en Continuar.
4. Mediante la solicitud de Firma de Certificado que se creó recién, genera el certificado SSL de APNS para notificaciones push.
5. Cuando aparezca el botón Descargar, estarás listo para descargarlo. Es posible que necesites recargar la página para que esto se actualice. Descarga el certificado recién creado:
6. Abre el certificado. Al hacer esto, se abrirá el Acceso de Keychain.
En el Acceso de Keychain, tu certificado se mostrará debajo de Mis Certificados. De lo contrario, marca Certificados para ver si se encuentra allí.
Nota
Solo los administradores de cuenta pueden cargar o cambiar el certificado p12.
3. Renovar tu certificado
Si vas a renovar tu Certificado SSL de Desarrollo o Producción para Notificaciones Push, sigue los pasos que se indican más arriba como si cargaras el certificado por primera vez. No es necesario revocar el certificado anterior para hacer este cambio. Es posible que haya dos certificados de producción al mismo tiempo para que puedas seguir usando el certificado anterior mientras cargas el nuevo.
4. Exportar el archivo P12
El último paso antes de volver al panel de control de AppsFlyer consiste en guardar tu certificado de firma como un archivo .p12.
1. Selecciona el certificado que se agregó recién al Acceso de Keychain.
2. Ve a Archivo>Exportar elementos.
3. Selecciona Mis Certificados debajo del menú Categoría en la parte inferior izquierda.
Si la opción Mis Certificados no aparece resaltada, no podrás exportar el certificado como un archivo .p12.
3. Cuando guardes el archivo, usa el formato Intercambio de Información Personal (.p12).
4. Asegúrate de que diga Servicios Push de Apple y aparezca de la siguiente manera:
5. Ve al panel de control de tu aplicación en la plataforma de AppsFlyer.
6. Seleccione Configuración de la aplicación desde el menú izquierdo.
7. Haz clic en el icono de carga y selecciona el archivo P12 que deseas cargar.
8. (opcional) Si el certificado P12 está protegido con contraseña, escribe la contraseña en la contraseña del certificado P12.
9. Haz clic en Validar para enviar el certificado a AppsFlyer a fin de comprobar si es válido.
10. Haz clic en Guardar Configuración .
5. integración con el SDK
Las notificaciones push deben estar registradas a nivel del código de la aplicación para habilitar la recopilación de datos sobre desinstalaciones.
//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)
}
Agrega el siguiente código a tu 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];
}
}
En AppDelegate.h, inserta el siguiente código para agregar UNUserNotificationCenterDelegate a la declaración de interfaz:
#import <AppsFlyerLib/AppsFlyerTracker.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate, AppsFlyerTrackerDelegate>
Los fragmentos de código anteriores solicitan permisos del usuario para enviar notificaciones push. No obstante, si solo usas las notificaciones push en modo de segundo plano para medir las desinstalaciones, no es necesaria la aprobación de los usuarios. Esto se debe a que estas notificaciones push son silenciosas y no requieren que solicites permisos a los usuarios.
Permiso de usuario para notificaciones push en modo de segundo plano
Si solo usa notificaciones push silenciosas, asegúrese de activar las Notificaciones remotas en Modos en segundo plano de las Capacidades de su aplicación:
- En XCode, seleccione su proyecto.
- Seleccione su objetivo.
- Pase a la pestaña Capacidades.
- Active los Modos en segundo plano.
- Verifique las Notificaciones remotas.
6. Notificaciones Push
Asegúrate de agregar la opción Notificaciones Push en la pestaña de capacidades de XCode. Sin eso, el deviceToken no se recopilará.
7. Probar el Rastreo de Desinstalaciones
Para probar la medición de desinstalaciones en iOS:
- Instala la aplicación.
- Desinstala la aplicación. Nota: Puedes desinstalar la aplicación inmediatamente después de instalarla.
Cuando se prueban desinstalaciones de Xcode o TestFlight es importante hacer saber a nuestro SDK que el token se genera desde un entorno de pruebas. Usa las siguientes API:
AppsFlyerTracker.shared().useUninstallSandbox = true
[AppsFlyerTracker sharedTracker].useUninstallSandbox = true;
Nota: Las desinstalaciones no aparecen inmediatamente en el panel de control de AppsFlyer:
- Las desinstalaciones tardan 9 días en promedio en aparecer en los reportes.
- Puede tomar más de un mes para que las desinstalaciones originadas en entornos de pruebas aparezcan en los reportes.
Además, la fecha de la desinstalación es la fecha en que se reporta la desinstalación. Consulta la siguiente sección para obtener más información.
8. Ver los Datos de Desinstalaciones en el Panel de Control de AppsFlyer
La medición de desinstalaciones se muestra en el panel de control principal, en la tabla de rendimiento agregado.
Debido a un a cambio reciente en el servicio de notificaciones push de Apple, el tiempo que tardan en aparecer las desinstalaciones en el panel de control es de 9 días como mínimo. AppsFlyer actualiza y agrega las métricas de las desinstalaciones cada 24 horas.
Ejemplo
- Día 1: un usuario instala tu aplicación.
- Día 4: el usuario desinstala tu aplicación.
- Día 12: el servicio de notificaciones push de Apple (APN) reporta la eliminación de la aplicación 8 días después de la desinstalación.
- Día 13: los datos de desinstalación aparecen en el raw data y el panel de control de AppsFlyer.
Para más detalles, consulte la sección Medición de desinstalaciones de aplicaciones para iOS de la Guía de integración del SDK.
9. Desactivar la medición de desinstalaciones
Si se proporciona y valida un certificado P12, la medición de desinstalaciones de la aplicación está activada de forma predeterminada. Los propietarios de las aplicaciones pueden desactivar esta función a través del panel de control.
Note! For an uninstall to be reported: Enable uninstalls measurement must be on at the time the app is installed. Installs occurring when Enable uninstalls measurement is off aren't reported.
Para desactivar la medición de desinstalaciones:
- En AppsFlyer, ve a Configuración de la aplicación.
- Desplázate hasta Atribución > Desinstalaciones y desactiva Habilitar medición de desinstalaciones.
Postbacks de eventos de desinstalación
AppsFlyer le permite enviar un postback de evento de desinstalación de cada usuario que haya ejecutado una desinstalación a los socios con los que trabaja. En el panel de control de AppsFlyer, el evento de desinstalación figura como af_uninstall
.
Asignación del evento de desinstalación
La asignación de evento af_uninstall
es exactamente igual a la asignación de cualquier evento in-app de su aplicación.
Como en cualquier evento in-app, AppsFlyer puede enviar el postback solo si el evento realmente ocurre y es registrado por AppsFlyer. Por lo tanto, la asignación de af_uninstall solo funciona para implementaciones de desinstalación completa. Si no ve desinstalaciones en la página de información general o en los reportes de raw data de desinstalaciones, no se enviará ningún postback de desinstalación a los socios, aunque haya asignado el evento af_uninstall
.
Sincronización de af_uninstall
A diferencia de los postbacks para eventos in-app regulares, el evento af_uninstall
no se envía en tiempo real.
En los postbacks de partners y raw data de AppsFlyer, la hora registrada del evento af_uninstall
es el momento en que AppsFlyer toma conocimiento de la desinstalación.
- Para los dispositivos Android: 24-48 horas después de la desinstalación real de la aplicación
- Para los dispositivos iOS: 9-11 días después de la desinstalación real de la aplicación
Limitaciones
Los eventos af_uninstall no están incluidos en los reportes de postbacks de eventos in-app.
El evento af_uninstall actualmente no está disponible para todos los partners.
Si deseas asignarlo a un partner, pero ves que el evento no está disponible para el partner, ponte en contacto con tu CSM o escribe a hello@appsflyer.com.
Si eres un partner y deseas recibir eventos af_uninstall, ponte en contacto con tu PDM dedicado o escribe a partners@appsflyer.com.