SDK do Android - Rastreamento de desinstalação

Rastreamento de desinstalação

Rastreie as desinstalações de aplicativos para medir a retenção de usuários e otimizar campanhas de reengajamento integrando o Firebase Cloud Messaging (FCM) ao SDK do Singular.

Importante: O Google tornou as APIs do GCM obsoletas em abril de 2018. Use o Firebase Cloud Messaging (FCM) para todas as implementações de rastreamento de desinstalação.

Pré-requisitos

Configurar a plataforma do Singular

Antes de implementar o rastreamento de desinstalação em seu aplicativo, configure seu app na plataforma do Singular e conclua as etapas de integração do SDK do Android + FCM descritas em Configuração do rastreamento de desinstalação no Android .


Requisitos do sistema

O rastreamento de desinstalação requer o Firebase Cloud Messaging e configurações específicas do dispositivo.

Requisitos do FCM ( fonte ):

  • Versão do Android: Os dispositivos devem executar o Android 4.1 (API 16) ou superior
  • Google Play Services: Os dispositivos devem ter o aplicativo Google Play Store instalado
  • Suporte a emuladores: Emuladores com Android 4.1+ e APIs do Google são compatíveis
  • Distribuição: Os aplicativos podem ser distribuídos fora da Google Play Store e ainda assim oferecer suporte ao rastreamento de desinstalação

Nota: Usuários em versões do Android não compatíveis ou 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 em seu aplicativo se ainda não estiver configurado.

Siga o guia oficial do Google para Configurar um aplicativo cliente do Firebase Cloud Messaging no Android . Isso inclui:

  1. Adicione o Firebase ao seu projeto Android
  2. Adicione a dependência do SDK do FCM ao seu app/build.gradle
  3. Crie uma classe Firebase Messaging Service
  4. Solicite permissões de notificação (Android 13+)

Etapa 2: Confirmar a configuração de FCM no AndroidManifest.xml

Verificar o serviço e as permissões do FCM

Certifique-se de que seu aplicativo já esteja integrado ao Firebase Cloud Messaging e de que o manifesto do Android declare um FirebaseMessagingService para receber mensagens FCM.

XML
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.package">

    <!-- FCM Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

    <application>

        <!-- App Firebase Messaging Service -->
        <service
            android:name=".MyFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

    </application>

</manifest>

Importante: Substitua .MyFirebaseMessagingService pelo nome totalmente qualificado da sua classe que estende FirebaseMessagingService . Apenas um serviço deve manipular o intent com.google.firebase.MESSAGING_EVENT em seu aplicativo.


Etapa 3: Registrar o token do dispositivo FCM

Obtenha o token do dispositivo FCM e envie-o ao Singular para o rastreamento de desinstalação.

Obter e definir o token

Obtenha o token FCM e registre-o no Singular imediatamente após a inicialização do SDK.

Kotlin Java
import com.google.firebase.messaging.FirebaseMessaging
import com.singular.sdk.Singular

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Initialize Singular SDK
        val config = SingularConfig("SDK_KEY", "SDK_SECRET")
        Singular.init(applicationContext, config)

        // Retrieve and register FCM token
        FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w("FCM", "Fetching FCM token failed", task.exception)
                return@addOnCompleteListener
            }

            // Get FCM token
            val token = task.result

            // Register token with Singular
            Singular.setFCMDeviceToken(token)
            Log.d("FCM", "FCM token registered with Singular: $token")
        }
    }
}

Melhor prática: Registre o token FCM imediatamente após Singular.init() para garantir que o rastreamento de desinstalação esteja habilitado desde a primeira sessão do aplicativo.

Singular.setFCMDeviceToken() não executa nenhuma ação silenciosamente se for chamado antes da conclusão de Singular.init() ou se o argumento do token for null ou vazio. Se o registro do token parecer não fazer nada, confirme se o SDK foi inicializado primeiro e se o token FCM retornado pelo Firebase é uma string não vazia.


Lidar com a atualização do token

Atualize o token FCM no Singular sempre que ele for renovado para manter um rastreamento de desinstalação preciso.

Kotlin Java
import com.google.firebase.messaging.FirebaseMessagingService
import com.singular.sdk.Singular

class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        super.onNewToken(token)

        // Send updated token to Singular
        Singular.setFCMDeviceToken(token)
        Log.d("FCM", "New FCM token registered: $token")

        // Also send token to your server if needed
        sendTokenToServer(token)
    }

    private fun sendTokenToServer(token: String) {
        // Implement your server communication logic here
    }
}

Importante: Os tokens FCM podem ser atualizados a qualquer momento (atualizações do app, restauração do dispositivo, etc.). Sempre implemente onNewToken() para manter o Singular atualizado.


Método de configuração alternativo

Definir o token durante a inicialização

Se você tiver o token FCM disponível antes da inicialização do SDK, configure-o no objeto SingularConfig .

Kotlin Java
// Get token synchronously (if cached)
val cachedToken = getStoredFCMToken() // Your caching logic

val config = SingularConfig("SDK_KEY", "SDK_SECRET")
    .withFCMDeviceToken(cachedToken)

Singular.init(applicationContext, config)

Assinatura do método:

public SingularConfig withFCMDeviceToken(String fcmDeviceToken);

withFCMDeviceToken apenas inicializa o SDK com o token que você tem no momento da inicialização. Ele não se inscreve nas atualizações de token. Você ainda precisa implementar FirebaseMessagingService.onNewToken e chamar Singular.setFCMDeviceToken(newToken) lá para manter o registro do Singular atualizado. O método de configuração também não executa nenhuma ação silenciosamente se o token fornecido for null ou vazio.


Verificação e solução de problemas

Verificar a implementação

Confirme que o rastreamento de desinstalação está funcionando corretamente.

  1. Verifique os logs: Confirme que o registro do token FCM aparece em seus logs
  2. Teste a geração do token: Certifique-se de que os tokens sejam gerados na primeira execução do aplicativo
  3. Monitore o dashboard: Verifique o dashboard do Singular para os dados de rastreamento de desinstalação após 24-48 horas
  4. Teste a atualização do token: Limpe os dados do aplicativo e verifique se o token é atualizado corretamente

Problemas comuns

  • Token não gerado: Verifique se as dependências do FCM foram adicionadas corretamente e se o Firebase está configurado em seu projeto
  • Token não atualizando: Verifique se o callback onNewToken() está implementado em seu FirebaseMessagingService
  • Dados ausentes: Certifique-se de que os dispositivos atendam aos requisitos do FCM (Android 4.1+, Google Play Services instalado)
  • Erro de configuração: Confirme se o rastreamento de desinstalação está habilitado nas configurações da plataforma do Singular

Recursos adicionais: Para uma solução de problemas detalhada, consulte o Guia de configuração do rastreamento de desinstalação e a Documentação do Firebase Cloud Messaging .