Rastreamento de desinstalação
Rastreie desinstalações de aplicativos para medir a retenção de usuários e otimizar campanhas de reengajamento integrando serviços de notificação por push com o SDK Singular.
Importante: o Google descontinuou as APIs do GCM em abril de 2018. Use o Firebase Cloud Messaging (FCM) para todas as implementações de rastreamento de desinstalação do Android.
Rastreamento de desinstalação do Android
Pré-requisitos
Antes de implementar o rastreamento de desinstalação em seu aplicativo Unity, configure seu aplicativo na plataforma Singular seguindo o guia Configurando o rastreamento de desinstalação do Android.
Requisitos do sistema
O rastreamento de desinstalação requer o Firebase Cloud Messaging e configurações específicas do dispositivo.
Requisitos de FCM(fonte):
- Versão do Android: Os dispositivos devem executar o Android 4.1 (API 16) ou superior
- Serviços do Google Play: Os dispositivos devem ter o aplicativo Google Play Store instalado
- Suporte de emulador: São suportados emuladores Android 4.1+ com APIs do Google
- Distribuição: As aplicações podem ser distribuídas fora da Google Play Store, continuando a suportar o controlo de desinstalações
Nota: os utilizadores de versões do Android não suportadas ou de dispositivos sem o Google Play Services não serão rastreados para desinstalações.
Etapas de implementação
Etapa 1: Integrar o Firebase Cloud Messaging
Configure o Firebase Cloud Messaging no seu aplicativo Unity se ainda não estiver configurado.
Siga o guia oficial do Google para Configurar o Firebase Cloud Messaging para Unity. Isso inclui:
- Adicionar Firebase ao seu projeto Unity
- Importar o pacote Unity do Firebase Messaging
- Configurar as definições do Firebase para Android
- Solicitar permissões de notificação (Android 13+)
Etapa 2: Configurar AndroidManifest.xml
Registre seu Firebase Messaging Service no manifesto do Android para receber mensagens FCM.
<service
android:name=".java.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Importante: Substitua .java.MyFirebaseMessagingService pelo nome totalmente qualificado da sua classe que estende FirebaseMessagingService.
Passo 3: Registar o Token de Dispositivo FCM
Recupere o token do dispositivo FCM e envie-o para a Singular para rastrear a desinstalação antes da inicialização do 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: O método RegisterTokenForUninstall()deve ser chamado antes deSingularSDK.InitializeSingularSDK(). Registrar o token após a inicialização não permitirá o rastreamento da desinstalação.
Etapa 4: Tratar a atualização do token
Atualize o token FCM com o Singular sempre que ele for atualizado para manter o rastreamento de desinstalação preciso.
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}");
}
}
Melhores práticas: Os tokens FCM podem ser atualizados a qualquer momento (atualizações de aplicativos, restauração de dispositivos, etc.). Sempre assine o evento TokenReceived para manter o Singular atualizado com o token mais recente.
Rastreamento de desinstalação do iOS
Pré-requisitos
O rastreamento de desinstalação no iOS é baseado na tecnologia do serviço de notificação por push da Apple (APNs).
Se o seu aplicativo não for compatível com notificações por push, consulte o guia da Apple para Registrar seu aplicativo com APNs.
Registar o Token de Dispositivo APNS
Passe o token de dispositivo devolvido pelos APNs utilizando o método RegisterTokenForUninstall depois de o SDK ser inicializado.
Assinatura do método:
public static void RegisterTokenForUninstall(string APNSToken)
Parâmetros:
- APNSToken: O token de dispositivo retornado dos APNs como uma cadeia de caracteres hexadecimal
Formato do token: O token APNS é normalmente um dado binário na sua forma nativa, mas é necessário passá-lo ao Singular como uma representação de cadeia hexadecimal.
Exemplo de uso
Registre o token de dispositivo APNS com o Singular para rastreamento de desinstalação do 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
}
Exemplo Token:
// Pass the APNS token as a hex-string
SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");
Diferença de plataforma: Ao contrário do Android, onde o token deve ser registrado antes da inicialização do SDK, os tokens do iOS devem ser registrados após ainicialização do SDK.
Verificação e solução de problemas
Verificar a implementação
Confirme se o rastreamento de desinstalação está funcionando corretamente.
- Verifique os logs: Verifique se o registro do token aparece nos logs do console do Unity
- Teste a geração de tokens: Certifique-se de que os tokens sejam gerados na primeira inicialização do aplicativo
- Monitorar painel: Verifique o painel do Singular para obter dados de rastreamento de desinstalação após 24-48 horas
- Teste a atualização do token: Limpar os dados do aplicativo e verificar se o token é atualizado corretamente
Problemas comuns
- Token Android não gerado: Verifique se as dependências do Firebase foram adicionadas corretamente e se o Firebase está configurado no seu projeto Unity
-
O token não está sendo atualizado: Verifique se você se inscreveu no evento
TokenReceivedpara Android ou se manipulou corretamente os retornos de chamada de APNs para iOS - Dados ausentes: Certifique-se de que os dispositivos atendam aos requisitos da plataforma (Android 4.1+ com Google Play Services, iOS com suporte a APNs)
- Erro de configuração: Confirmar se o rastreamento de desinstalação está ativado nas configurações da plataforma Singular
-
Ordem de inicialização: Para Android, verifique se
RegisterTokenForUninstall()é chamado antes deInitializeSingularSDK()
Recursos adicionais: Para obter uma solução de problemas detalhada, consulte o Guia de configuração de rastreamento de desinstalação do Androide a Documentação do Firebase Cloud Messaging para Unity.