Registration Token en notificaciones push: qué es, formas de obtenerlo y actualizarlo

Autor: IT Sectr Publicado: 2026-03-21 Tiempo de lectura: 8 min

Registration Token es un identificador único de dispositivo que Firebase Cloud Messaging (FCM) utiliza para entregar notificaciones push. Cada aplicación en cada dispositivo recibe su propio token, sin el cual el envío de notificaciones es imposible. Según Firebase, 2025, el Registration Token se genera automáticamente al iniciar la aplicación por primera vez y puede cambiar bajo ciertas condiciones.

Puntos clave

  • Registration Token es una cadena que identifica una instancia de aplicación en un dispositivo concreto para FCM.
  • El token se genera automáticamente al primer inicio o después de borrar los datos de la aplicación.
  • FCM utiliza el token para enrutar las notificaciones push al dispositivo correcto.
  • El token puede cambiar — la aplicación debe suscribirse a las actualizaciones mediante onNewToken.
  • Para enviar notificaciones, el servidor debe almacenar los tokens actuales de todos los dispositivos.

Qué es un Registration Token

Registration Token es una cadena única de hasta 4096 caracteres que Firebase Cloud Messaging asigna a cada instancia de aplicación. El token se forma basándose en el ID de la aplicación, el ID del dispositivo y la cuenta de Google en el dispositivo.

Estructura y propósito del token

Un Registration Token consiste en una secuencia aleatoria de caracteres codificados en formato Base64. FCM utiliza este token como dirección de entrega — el servidor envía una notificación al token y FCM la enruta al dispositivo específico. Sin un token, es imposible dirigir una notificación push a un usuario concreto.

Diferencias con otros identificadores

Un Registration Token no debe confundirse con el Device ID (IMEI) o el Advertising ID. El Device ID es un identificador hardware del dispositivo, mientras que el Advertising ID se utiliza para fines publicitarios. El Registration Token está vinculado a la combinación de aplicación y dispositivo, y un mismo dispositivo puede tener varios tokens para diferentes aplicaciones.

IdentificadorPropósitoMutabilidad
Registration TokenEntrega de notificaciones push FCMPuede cambiar
Device ID (IMEI)Identificación del hardwarePermanente
Advertising IDPublicidad dirigidaPuede restablecerse
Instance IDMecanismo Firebase heredadoCambiaba al eliminar

Cuándo se considera inválido el token

FCM puede considerar inválido un Registration Token en varias situaciones. Si la aplicación se elimina del dispositivo, el token se revoca automáticamente. Al restaurar datos desde una copia de seguridad en un dispositivo nuevo, el token antiguo deja de funcionar. Firebase también devuelve un estado UNREGISTERED al intentar enviar una notificación a un token obsoleto.

Cómo asigna FCM un Registration Token

Firebase Cloud Messaging genera un Registration Token cuando la aplicación se inicia por primera vez y se llama al método getToken(). El proceso incluye la verificación de las credenciales de Google Play Services y el registro de la aplicación en la infraestructura de Firebase.

Proceso de registro del dispositivo

Cuando un dispositivo ejecuta una aplicación con el SDK de FCM integrado por primera vez, ocurre lo siguiente. El SDK de Firebase verifica la presencia de Google Play Services en el dispositivo. Luego, el SDK envía una solicitud a los servidores de Firebase, transmitiendo el ID de la aplicación y la información del dispositivo. El servidor de Firebase crea un nuevo token y lo devuelve a la aplicación.

Mecánica interna de FCM

FCM utiliza una arquitectura basada en conexiones de larga duración. Después de recibir un Registration Token, el dispositivo establece una conexión persistente con los servidores de Firebase a través del protocolo STOMP en Android o del canal APNs en iOS. Cuando el servidor envía una notificación al token, FCM encuentra el dispositivo mediante el token y entrega la carga útil.

Condiciones de regeneración del token

Un Registration Token puede ser regenerado por FCM en los siguientes casos. Al restaurar una aplicación desde una copia de seguridad en un dispositivo nuevo. Al eliminar y reinstalar la aplicación. Al borrar los datos de la aplicación a través de la configuración del sistema. Al iniciar sesión con una cuenta de Google diferente en el dispositivo. Firebase recomienda manejar siempre la devolución de llamada onNewToken para rastrear los cambios.

Obtener un Registration Token en Android

En Android, el Registration Token se obtiene a través del SDK de Firebase Messaging. El proceso difiere según la versión del SDK — las versiones más nuevas utilizan la API FirebaseInstallations en lugar de la obsoleta FirebaseInstanceId.

Método moderno mediante FirebaseInstallations

A partir de la versión 21.0.0 del SDK de Firebase, el método getToken() se llama a través de FirebaseMessaging. Este enfoque gestiona automáticamente el ciclo de vida del token y se suscribe a sus actualizaciones.

kotlin
class MyFirebaseMessagingService : FirebaseMessagingService() {

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

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

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

Manejo del token en Activity o ViewModel

En algunos escenarios, el token no se necesita en el servicio sino directamente en una Activity o ViewModel. Para ello, se puede llamar a getToken() en un punto conveniente del ciclo de vida de la aplicación. Es importante no llamar a este método desde el hilo principal sin manejar la asincronía.

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 heredado FirebaseInstanceId

En versiones anteriores del SDK de Firebase (anteriores a la 20.x), el token se obtenía mediante FirebaseInstanceId.getInstance().getToken(). Este método está marcado como obsoleto y no se recomienda su uso en proyectos nuevos. Los desarrolladores que mantienen código heredado deberían migrar a la API FirebaseInstallations.

Obtener un Registration Token en iOS

En iOS, el proceso de obtención del Registration Token difiere arquitectónicamente — FCM funciona a través de Apple Push Notification service (APNs). El SDK de Firebase recibe un token de dispositivo único de APNs, lo convierte al formato FCM y lo entrega a la aplicación.

Configuración de APNs y obtención del token

Para usar FCM en iOS, es necesario configurar un certificado o clave APNs en la consola de Firebase. La aplicación debe solicitar permiso para notificaciones a través de UNUserNotificationCenter. Tras recibir el token de APNs, el SDK de Firebase genera automáticamente el 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)
    }
}

Diferencias entre el token de iOS y Android

El Registration Token en iOS es de menor tamaño en comparación con el token de Android, ya que se basa en el token de dispositivo APNs. El SDK de Firebase actualiza automáticamente el token FCM cuando cambia el token APNs, lo que ocurre al restaurar un dispositivo desde una copia de seguridad o al reinstalar la aplicación.

Actualización y gestión del Registration Token

Gestionar el ciclo de vida del Registration Token es una tarea crítica para la entrega fiable de notificaciones push. Si el servidor almacena un token obsoleto, las notificaciones no se entregarán y Firebase devolverá un error UNREGISTERED.

Monitoreo de cambios en el token

El SDK de Firebase proporciona dos mecanismos para rastrear cambios en el token. En Android se utiliza la devolución de llamada onNewToken en FirebaseMessagingService. En iOS se utiliza el delegado messaging:didReceiveRegistrationToken. Ambos se invocan cada vez que se actualiza el token.

kotlin
// Guardar token en SharedPreferences y enviar al 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)
    }
}

Estrategia de almacenamiento de tokens en el servidor

El servidor debe almacenar el Registration Token asociado al identificador de usuario. Cuando el token se actualiza, el cliente envía el nuevo token al servidor, y el servidor reemplaza el antiguo. Se recomienda mantener un historial de tokens: si una notificación no se entrega al nuevo token, se puede intentar con el antiguo.

Manejo de errores al trabajar con tokens

Firebase puede devolver un error al obtener el token en varios casos. Si faltan Google Play Services en el dispositivo, no se obtendrá el token. Si se supera la cuota de solicitudes a FCM, es necesario implementar una espera exponencial en los reintentos. Si el token caduca, el SDK solicita automáticamente uno nuevo.

SituaciónResultadoAcción del desarrollador
Eliminación de la aplicaciónToken revocadoEliminar token de la base de datos
Restauración desde copia de seguridadNuevo tokenActualizar en la base de datos
Restablecimiento de Google Play ServicesToken regeneradoManejar onNewToken
Caducidad del tokenActualización automáticaSuscribirse a actualizaciones

Preguntas frecuentes

¿Qué hacer si no se recibe el Registration Token?

Verifique que Google Play Services esté disponible en el dispositivo, compruebe el archivo google-services.json y la versión del SDK de Firebase. Asegúrese de que la aplicación tenga permiso de internet.

¿Con qué frecuencia cambia el Registration Token?

El token puede cambiar al desinstalar y reinstalar la aplicación, borrar datos, restaurar desde una copia de seguridad o al iniciar sesión con una cuenta de Google diferente. No hay un intervalo de tiempo fijo.

¿Puede un dispositivo tener varios Registration Tokens?

Sí, cada aplicación en el dispositivo recibe su propio token FCM. Si un dispositivo tiene tres aplicaciones con Firebase, cada una tendrá su propio Registration Token único.

¿Cómo comprobar si un Registration Token sigue siendo válido?

Envíe una notificación de prueba a través de la consola de Firebase o la API HTTP de FCM. Si el token no es válido, la API devolverá un error UNREGISTERED o NOT_FOUND.

¿Es seguro almacenar el Registration Token en el servidor?

Un Registration Token no es una clave secreta, pero su filtración permite enviar notificaciones al dispositivo del usuario. Almacene los tokens en una base de datos segura y utilice HTTPS para la transmisión.

Resumen

  • Registration Token es un elemento obligatorio para la entrega de notificaciones push a través de Firebase Cloud Messaging.
  • El token se genera automáticamente al primer inicio de una aplicación con el SDK de FCM.
  • En Android, el token se obtiene mediante FirebaseMessaging.getInstance().getToken().
  • En iOS, el token se basa en el token de dispositivo APNs y se entrega a través del delegado MessagingDelegate.
  • El token puede cambiar — la aplicación debe manejar la devolución de llamada onNewToken.
  • El servidor debe almacenar los tokens actuales y eliminar los obsoletos cuando se produzca un error UNREGISTERED.
  • Para una entrega fiable, implemente la monitorización de cambios en el token y un mecanismo de reintentos ante fallos.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también