Seguimiento de desinstalaciones
Realiza un seguimiento de las desinstalaciones de apps para medir la retención de usuarios y optimizar las campañas de reenganche integrando servicios de notificaciones push con Singular SDK.
Importante: Google dejó obsoletas las API de GCM en abril de 2018. Utiliza Firebase Cloud Messaging (FCM) para todas las implementaciones de seguimiento de desinstalación de Android.
Seguimiento de desinstalación de Android
Requisitos previos
Antes de implementar el seguimiento de desinstalación en tu app Unity, configura tu app en la plataforma Singular siguiendo la guía Configuración del seguimiento de desinstalación de Android.
Requisitos del sistema
El seguimiento de desinstalación requiere Firebase Cloud Messaging y configuraciones específicas del dispositivo.
Requisitos de FCM(fuente):
- Versión de Android: Los dispositivos deben ejecutar Android 4.1 (API 16) o superior
- Servicios de Google Play: Los dispositivos deben tener instalada la aplicación Google Play Store
- Compatibilidad con emuladores: Se admiten emuladores de Android 4.1+ con API de Google
- Distribución: Las aplicaciones se pueden distribuir fuera de Google Play Store sin dejar de admitir el seguimiento de desinstalaciones.
Nota: no se realizará el seguimiento de las desinstalaciones de los usuarios que utilicen versiones de Android no compatibles o dispositivos sin Google Play Services.
Pasos de implementación
Paso 1: Integrar Firebase Cloud Messaging
Configura Firebase Cloud Messaging en tu aplicación Unity si aún no está configurada.
Sigue la guía oficial de Google para configurar Firebase Cloud Messaging para Unity, que incluye:
- Añadir Firebase a tu proyecto Unity
- Importar el paquete Firebase Messaging Unity
- Configurar los ajustes de Firebase para Android
- Solicitar permisos de notificación (Android 13+)
Paso 2: Configurar AndroidManifest.xml
Registra tu servicio de mensajería Firebase en el manifiesto de Android para recibir mensajes FCM.
<service
android:name=".java.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Importante: Sustituya .java.MyFirebaseMessagingService por el nombre completo de su clase que extienda FirebaseMessagingService.
Paso 3: Registrar el token de dispositivo FCM
Recupere el token de dispositivo FCM y envíelo a Singular para el seguimiento de la desinstalación antes de la inicialización del SDK.
using UnityEngine;
using Singular;
using Firebase.Messaging;
using System.Threading.Tasks;
public class UninstallTrackingManager : MonoBehaviour
{
async void Start()
{
// Initialize Firebase
await InitializeFirebase();
// Get FCM token and register it with Singular
await RegisterFCMToken();
// Initialize Singular SDK after registering the token
SingularSDK.InitializeSingularSDK();
}
private async Task InitializeFirebase()
{
var dependencyStatus = await Firebase.FirebaseApp.CheckAndFixDependenciesAsync();
if (dependencyStatus == Firebase.DependencyStatus.Available)
{
Debug.Log("Firebase is ready");
}
else
{
Debug.LogError($"Could not resolve Firebase dependencies: {dependencyStatus}");
}
}
private async Task RegisterFCMToken()
{
try
{
// Get FCM token
string token = await Firebase.Messaging.FirebaseMessaging.GetTokenAsync();
if (!string.IsNullOrEmpty(token))
{
// Register token with Singular BEFORE SDK initialization
SingularSDK.RegisterTokenForUninstall(token);
Debug.Log($"FCM token registered with Singular: {token}");
}
else
{
Debug.LogWarning("FCM token is empty");
}
}
catch (System.Exception ex)
{
Debug.LogError($"Error getting FCM token: {ex.Message}");
}
}
}
Crítico: el método RegisterTokenForUninstall()debe invocarse antes queSingularSDK.InitializeSingularSDK(). El registro del token después de la inicialización no permitirá el seguimiento de la desinstalación.
Paso 4: Gestión de la actualización del token
Actualice el token FCM con Singular cada vez que se actualice para mantener un seguimiento preciso de la desinstalación.
using UnityEngine;
using Singular;
using Firebase.Messaging;
public class FCMTokenRefreshHandler : MonoBehaviour
{
void Start()
{
// Subscribe to token refresh event
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
}
void OnDestroy()
{
// Unsubscribe when destroyed
Firebase.Messaging.FirebaseMessaging.TokenReceived -= OnTokenReceived;
}
private void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs e)
{
Debug.Log($"New FCM token received: {e.Token}");
// Update token with Singular
SingularSDK.RegisterTokenForUninstall(e.Token);
// Also send token to your server if needed
SendTokenToServer(e.Token);
}
private void SendTokenToServer(string token)
{
// Implement your server communication logic here
Debug.Log($"Sending token to server: {token}");
}
}
Práctica recomendada: Los tokens FCM pueden actualizarse en cualquier momento (actualizaciones de aplicaciones, restauración de dispositivos, etc.). Suscríbase siempre al evento TokenReceived para mantener Singular actualizado con el token más reciente.
Seguimiento de la desinstalación de iOS
Requisitos previos
El seguimiento de desinstalaciones en iOS se basa en la tecnología del servicio de notificaciones push de Apple (APN).
Si su aplicación no es compatible con las notificaciones push, consulte la guía de Apple para Registrar su aplicación con APNs.
Registro del token de dispositivo APNS
Pase el token de dispositivo devuelto por APNs mediante el método RegisterTokenForUninstall una vez inicializado el SDK.
Firma del método:
public static void RegisterTokenForUninstall(string APNSToken)
Parámetros:
- APNSToken: El token de dispositivo devuelto desde APNs como cadena hexadecimal.
Formato del token: El token de APNS suele ser un dato binario en su forma nativa, pero debe pasarlo a Singular como una representación de cadena hexadecimal.
Ejemplo de uso
Registre el token de dispositivo APNS con Singular para el seguimiento de desinstalación de iOS.
using UnityEngine;
using Singular;
#if UNITY_IOS
using Unity.Notifications.iOS;
#endif
public class iOSUninstallTracking : MonoBehaviour
{
void Start()
{
#if UNITY_IOS
// Initialize Singular SDK first
SingularSDK.InitializeSingularSDK();
// Request notification authorization
RequestNotificationAuthorization();
#endif
}
#if UNITY_IOS
private void RequestNotificationAuthorization()
{
var authorizationOption = AuthorizationOption.Alert |
AuthorizationOption.Badge |
AuthorizationOption.Sound;
using (var req = new AuthorizationRequest(authorizationOption, true))
{
while (!req.IsFinished)
{
// Wait for authorization
}
string deviceToken = req.DeviceToken;
if (!string.IsNullOrEmpty(deviceToken))
{
// Convert device token to hex string and register with Singular
SingularSDK.RegisterTokenForUninstall(deviceToken);
Debug.Log($"APNS token registered: {deviceToken}");
}
else
{
Debug.LogWarning("Failed to get APNS device token");
}
}
}
#endif
}
Ejemplo Token:
// Pass the APNS token as a hex-string
SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");
Diferencia de plataforma: A diferencia de Android, donde el token debe registrarse antes de la inicialización del SDK, los tokens de iOS deben registrarse después de lainicialización del SDK.
Verificación y resolución de problemas
Verificación de la implementación
Confirme que el seguimiento de desinstalación funciona correctamente.
- Compruebe los registros: Verifique que el registro del token aparezca en los registros de la consola de Unity.
- Compruebe la generación de tokens: Asegúrese de que los tokens se generan en el primer lanzamiento de la aplicación.
- Supervise el panel de control: Compruebe los datos de seguimiento de desinstalación del panel de control de Singular transcurridas 24-48 horas.
- Prueba de actualización de tokens: Borre los datos de la aplicación y compruebe que los tokens se actualizan correctamente
Problemas comunes
- Token Android no generado: Compruebe que las dependencias de Firebase se han añadido correctamente y que Firebase está configurado en su proyecto Unity.
-
Token no actualizado: Comprueba que te has suscrito al evento
TokenReceivedpara Android o gestiona correctamente las devoluciones de llamada de APNs para iOS - Faltan datos: Asegúrate de que los dispositivos cumplen los requisitos de la plataforma (Android 4.1+ con Google Play Services, iOS con soporte APNs)
- Error de configuración: Confirmar que el seguimiento de desinstalación está habilitado en la configuración de la plataforma Singular
-
Orden de inicialización: En Android, compruebe que
RegisterTokenForUninstall()se llama antes queInitializeSingularSDK()
Recursos adicionales: Para obtener información detallada sobre la solución de problemas, consulte la Guía de configuración del seguimiento de desinstalación de Androidy la documentación de Firebase Cloud Messaging for Unity.