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 ú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.
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.
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.
| Identificador | Propósito | Mutabilidad |
|---|---|---|
| Registration Token | Entrega de notificaciones push FCM | Puede cambiar |
| Device ID (IMEI) | Identificación del hardware | Permanente |
| Advertising ID | Publicidad dirigida | Puede restablecerse |
| Instance ID | Mecanismo Firebase heredado | Cambiaba al eliminar |
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.
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.
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.
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.
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.
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.
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.
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)
}
}
}
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.
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")
}
}
}
}
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.
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.
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.
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)
}
}
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.
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.
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.
// 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)
}
}
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.
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ón | Resultado | Acción del desarrollador |
|---|---|---|
| Eliminación de la aplicación | Token revocado | Eliminar token de la base de datos |
| Restauración desde copia de seguridad | Nuevo token | Actualizar en la base de datos |
| Restablecimiento de Google Play Services | Token regenerado | Manejar onNewToken |
| Caducidad del token | Actualización automática | Suscribirse a actualizaciones |
Preguntas frecuentes
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.
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.
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.
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.
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
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.
Lea también