Registration Token em notificações push: o que é, formas de obter e atualizar

Autor: IT Sectr Publicado: 2026-03-21 Tempo de leitura: 8 min

Registration Token é um identificador único de dispositivo que o Firebase Cloud Messaging (FCM) usa para entregar notificações push. Cada aplicação em cada dispositivo recebe seu próprio token, sem o qual o envio de notificações é impossível. De acordo com Firebase, 2025, o Registration Token é gerado automaticamente na primeira inicialização da aplicação e pode mudar sob certas condições.

Pontos principais

  • Registration Token é uma string que identifica uma instância de aplicação num dispositivo específico para o FCM.
  • O token é gerado automaticamente na primeira inicialização ou após limpar os dados da aplicação.
  • FCM usa o token para rotear notificações push para o dispositivo correto.
  • O token pode mudar — a aplicação deve subscrever atualizações através de onNewToken.
  • Para enviar notificações, o servidor deve armazenar os tokens atuais de todos os dispositivos.

O que é um Registration Token

Registration Token é uma string única de até 4096 caracteres que o Firebase Cloud Messaging atribui a cada instância de aplicação. O token é formado com base no ID da aplicação, ID do dispositivo e na conta Google no dispositivo.

Estrutura e propósito do token

Um Registration Token consiste numa sequência aleatória de caracteres codificados em formato Base64. O FCM usa este token como endereço de entrega — o servidor envia uma notificação para o token, e o FCM a roteia para o dispositivo específico. Sem um token, é impossível direcionar uma notificação push para um utilizador específico.

Diferenças de outros identificadores

Um Registration Token não deve ser confundido com o Device ID (IMEI) ou Advertising ID. O Device ID é um identificador de hardware do dispositivo, enquanto o Advertising ID é usado para fins publicitários. O Registration Token está vinculado à combinação de aplicação e dispositivo, e um mesmo dispositivo pode ter vários tokens para diferentes aplicações.

IdentificadorPropósitoMutabilidade
Registration TokenEntrega de notificações push FCMPode mudar
Device ID (IMEI)Identificação do hardwarePermanente
Advertising IDPublicidade direcionadaPode ser reiniciado
Instance IDMecanismo Firebase legadoMudava ao eliminar

Quando o token é considerado inválido

O FCM pode considerar um Registration Token inválido em várias situações. Se a aplicação for removida do dispositivo, o token é automaticamente revogado. Ao restaurar dados de uma cópia de segurança num novo dispositivo, o token antigo deixa de funcionar. O Firebase também retorna um estado UNREGISTERED ao tentar enviar uma notificação para um token desatualizado.

Como o FCM atribui um Registration Token

Firebase Cloud Messaging gera um Registration Token quando a aplicação é iniciada pela primeira vez e o método getToken() é chamado. O processo inclui a verificação das credenciais do Google Play Services e o registo da aplicação na infraestrutura do Firebase.

Processo de registo do dispositivo

Quando um dispositivo executa uma aplicação com o SDK do FCM integrado pela primeira vez, ocorre o seguinte. O SDK do Firebase verifica a presença de Google Play Services no dispositivo. Em seguida, o SDK envia um pedido aos servidores do Firebase, transmitindo o ID da aplicação e as informações do dispositivo. O servidor do Firebase cria um novo token e devolve-o à aplicação.

Mecânica interna do FCM

O FCM usa uma arquitetura baseada em conexões de longa duração. Após receber um Registration Token, o dispositivo estabelece uma conexão persistente com os servidores do Firebase através do protocolo STOMP no Android ou do canal APNs no iOS. Quando o servidor envia uma notificação para o token, o FCM encontra o dispositivo pelo token e entrega a carga útil.

Condições de regeneração do token

Um Registration Token pode ser regenerado pelo FCM nos seguintes casos. Ao restaurar uma aplicação a partir de uma cópia de segurança num novo dispositivo. Ao eliminar e reinstalar a aplicação. Ao limpar os dados da aplicação através das definições do sistema. Ao iniciar sessão com uma conta Google diferente no dispositivo. O Firebase recomenda sempre tratar o callback onNewToken para monitorizar as alterações.

Obter um Registration Token no Android

No Android, o Registration Token é obtido através do SDK do Firebase Messaging. O processo difere conforme a versão do SDK — as versões mais recentes usam a API FirebaseInstallations em vez do obsoleto FirebaseInstanceId.

Método moderno através do FirebaseInstallations

A partir da versão 21.0.0 do SDK do Firebase, o método getToken() é chamado através de FirebaseMessaging. Esta abordagem gere automaticamente o ciclo de vida do token e subscreve as suas atualizações.

kotlin
class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendRegistrationToServer(token)
    }

    private fun sendRegistrationToServer(token: String) {
        // Enviar token para o servidor
        Log.d("FCM", "New token: $token")
    }

    init {
        FirebaseMessaging.getInstance()
            .getToken()
            .addOnCompleteListener { task ->
                if (!task.isSuccessful) {
                    Log.w("FCM", "Falha ao obter token FCM")
                    return@addOnCompleteListener
                }
                val token = task.result
                sendRegistrationToServer(token)
            }
    }
}

Manuseamento do token na Activity ou ViewModel

Em alguns cenários, o token é necessário não no serviço mas diretamente numa Activity ou ViewModel. Para tal, o getToken() pode ser chamado num ponto conveniente do ciclo de vida da aplicação. É importante não chamar este método a partir da thread principal sem tratar a assincronia.

kotlin
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        getFCMToken()
    }

    private fun getFCMToken() {
        FirebaseMessaging.getInstance().getToken()
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {
                    val token = task.result
                    Log.d("FCM", "Token: $token")
                }
            }
    }
}

Método legado FirebaseInstanceId

Em versões anteriores do SDK do Firebase (anteriores à 20.x), o token era obtido através de FirebaseInstanceId.getInstance().getToken(). Este método está marcado como obsoleto e não é recomendado para uso em novos projetos. Os programadores que mantêm código legado devem migrar para a API FirebaseInstallations.

Obter um Registration Token no iOS

No iOS, o processo de obtenção do Registration Token difere arquitetonicamente — o FCM funciona através do Apple Push Notification service (APNs). O SDK do Firebase recebe um token de dispositivo único do APNs, converte-o para o formato FCM e entrega-o à aplicação.

Configuração do APNs e obtenção do token

Para usar o FCM no iOS, é necessário configurar um certificado ou chave APNs na consola do Firebase. A aplicação deve solicitar permissão para notificações através de UNUserNotificationCenter. Após receber o token APNs, o SDK do Firebase gera automaticamente o Registration Token.

swift
import FirebaseMessaging
import UserNotifications

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        application: UIApplication,
        didFinishLaunchingWithOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        FirebaseApp.configure()
        Messaging.messaging().delegate = self
        requestNotificationAuthorization()
        return true
    }

    private func requestNotificationAuthorization() {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound, .badge])
    }
}

extension AppDelegate: MessagingDelegate {
    func messaging(
        messaging: Messaging,
        didReceiveRegistrationToken fcmToken: String?
    ) {
        Log.d("FCM", "Token: \(fcmToken ?? "")")
        sendTokenToServer(token: fcmToken)
    }
}

Diferenças entre o token iOS e Android

O Registration Token no iOS tem um tamanho menor em comparação com o token Android, pois baseia-se no token de dispositivo APNs. O SDK do Firebase atualiza automaticamente o token FCM quando o token APNs muda, o que acontece ao restaurar um dispositivo a partir de uma cópia de segurança ou ao reinstalar a aplicação.

Atualização e gestão do Registration Token

Gerir o ciclo de vida do Registration Token é uma tarefa crítica para a entrega fiável de notificações push. Se o servidor armazenar um token desatualizado, as notificações não serão entregues e o Firebase retornará um erro UNREGISTERED.

Monitorização de alterações no token

O SDK do Firebase fornece dois mecanismos para monitorizar alterações no token. No Android, é usado o callback onNewToken no FirebaseMessagingService. No iOS, é usado o delegado messaging:didReceiveRegistrationToken. Ambos são chamados sempre que o token é atualizado.

kotlin
// Guardar token no SharedPreferences e enviar para o servidor
class TokenManager(private val context: Context) {

    companion object {
        private const val PREFS_TOKEN_KEY = "fcm_registration_token"
    }

    fun saveToken(token: String) {
        val prefs = PreferenceManager
            .getDefaultSharedPreferences(context)
        prefs.edit().putString(PREFS_TOKEN_KEY, token).apply()
    }

    fun getSavedToken(): String? {
        val prefs = PreferenceManager
            .getDefaultSharedPreferences(context)
        return prefs.getString(PREFS_TOKEN_KEY, null)
    }
}

Estratégia de armazenamento de tokens no servidor

O servidor deve armazenar o Registration Token associado ao identificador de utilizador. Quando o token é atualizado, o cliente envia o novo token ao servidor, e o servidor substitui o antigo. Recomenda-se manter um histórico de tokens: se uma notificação não for entregue ao novo token, pode tentar-se o antigo.

Tratamento de erros ao trabalhar com tokens

O Firebase pode retornar um erro ao obter o token em vários casos. Falta de Google Play Services no dispositivo — o token não será obtido. Exceder a cota de pedidos ao FCM — é necessário implementar um backoff exponencial nas tentativas. Expiração do token — o SDK solicita automaticamente um novo.

SituaçãoResultadoAção do programador
Eliminação da aplicaçãoToken revogadoEliminar token da base de dados
Restauro de cópia de segurançaNovo tokenAtualizar na base de dados
Reinicialização do Google Play ServicesToken regeneradoTratar onNewToken
Expiração do tokenAtualização automáticaSubscrever atualizações

Perguntas frequentes

O que fazer se o Registration Token não for recebido?

Verifique se o Google Play Services está disponível no dispositivo, verifique o ficheiro google-services.json e a versão do SDK do Firebase. Certifique-se de que a aplicação tem permissão de internet.

Com que frequência o Registration Token muda?

O token pode mudar ao desinstalar e reinstalar a aplicação, limpar dados, restaurar a partir de uma cópia de segurança ou ao iniciar sessão com uma conta Google diferente. Não há um intervalo de tempo fixo.

Pode um dispositivo ter vários Registration Tokens?

Sim, cada aplicação no dispositivo recebe o seu próprio token FCM. Se um dispositivo tiver três aplicações com Firebase, cada uma terá o seu Registration Token único.

Como verificar se um Registration Token ainda é válido?

Envie uma notificação de teste através da consola do Firebase ou da API HTTP do FCM. Se o token for inválido, a API retornará um erro UNREGISTERED ou NOT_FOUND.

É seguro armazenar o Registration Token no servidor?

Um Registration Token não é uma chave secreta, mas a sua fuga permite enviar notificações para o dispositivo do utilizador. Armazene os tokens numa base de dados segura e use HTTPS para a transmissão.

Resumo

  • Registration Token é um elemento obrigatório para a entrega de notificações push através do Firebase Cloud Messaging.
  • O token é gerado automaticamente na primeira inicialização de uma aplicação com o SDK do FCM.
  • No Android, o token é obtido através de FirebaseMessaging.getInstance().getToken().
  • No iOS, o token baseia-se no token de dispositivo APNs e é entregue através do delegado MessagingDelegate.
  • O token pode mudar — a aplicação deve tratar o callback onNewToken.
  • O servidor deve armazenar os tokens atuais e eliminar os obsoletos quando ocorrer um erro UNREGISTERED.
  • Para uma entrega fiável, implemente monitorização de alterações do token e um mecanismo de tentativas em caso de falha.

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também