Registration Token est un identifiant unique d'appareil que Firebase Cloud Messaging (FCM) utilise pour distribuer les notifications push. Chaque application sur chaque appareil reçoit son propre token, sans lequel l'envoi de notifications est impossible. Selon Firebase, 2025, le Registration Token est généré automatiquement au premier lancement de l'application et peut changer sous certaines conditions.
Points clés
Registration Token est une chaîne unique pouvant atteindre 4096 caractères que Firebase Cloud Messaging attribue à chaque instance d'application. Le token est formé en fonction de l'ID de l'application, de l'ID de l'appareil et du compte Google sur l'appareil.
Un Registration Token consiste en une séquence aléatoire de caractères encodés au format Base64. FCM utilise ce token comme adresse de livraison — le serveur envoie une notification au token, et FCM l'achemine vers l'appareil spécifique. Sans token, il est impossible d'adresser une notification push à un utilisateur spécifique.
Un Registration Token ne doit pas être confondu avec le Device ID (IMEI) ou l'Advertising ID. Le Device ID est un identifiant matériel de l'appareil, tandis que l'Advertising ID est utilisé à des fins publicitaires. Le Registration Token est lié à la combinaison de l'application et de l'appareil, et un même appareil peut avoir plusieurs tokens pour différentes applications.
| Identifiant | Objectif | Mutabilité |
|---|---|---|
| Registration Token | Livraison de notifications push FCM | Peut changer |
| Device ID (IMEI) | Identification matérielle | Permanent |
| Advertising ID | Publicité ciblée | Peut être réinitialisé |
| Instance ID | Mécanisme Firebase hérité | Changeait à la suppression |
FCM peut considérer un Registration Token invalide dans plusieurs situations. Si l'application est supprimée de l'appareil, le token est automatiquement révoqué. Lors de la restauration de données à partir d'une sauvegarde sur un nouvel appareil, l'ancien token cesse de fonctionner. Firebase retourne également un statut UNREGISTERED lors d'une tentative d'envoi de notification vers un token obsolète.
Firebase Cloud Messaging génère un Registration Token lors du premier lancement de l'application et de l'appel de la méthode getToken(). Le processus comprend la vérification des identifiants Google Play Services et l'enregistrement de l'application dans l'infrastructure Firebase.
Lorsqu'un appareil exécute une application avec le SDK FCM intégré pour la première fois, ce qui suit se produit. Le SDK Firebase vérifie la présence de Google Play Services sur l'appareil. Ensuite, le SDK envoie une requête aux serveurs Firebase, transmettant l'ID de l'application et les informations de l'appareil. Le serveur Firebase crée un nouveau token et le retourne à l'application.
FCM utilise une architecture basée sur des connexions longue durée. Après avoir reçu un Registration Token, l'appareil établit une connexion persistante avec les serveurs Firebase via le protocole STOMP sur Android ou le canal APNs sur iOS. Lorsque le serveur envoie une notification au token, FCM trouve l'appareil par le token et délivre la charge utile.
Un Registration Token peut être régénéré par FCM dans les cas suivants. Lors de la restauration d'une application à partir d'une sauvegarde sur un nouvel appareil. Lors de la suppression et de la réinstallation de l'application. Lors de l'effacement des données de l'application via les paramètres système. Lors de la connexion avec un compte Google différent sur l'appareil. Firebase recommande de toujours traiter le callback onNewToken pour suivre les changements.
Sur Android, le Registration Token est obtenu via le SDK Firebase Messaging. Le processus diffère selon la version du SDK — les versions récentes utilisent l'API FirebaseInstallations au lieu de l'ancien FirebaseInstanceId.
À partir de la version 21.0.0 du SDK Firebase, la méthode getToken() est appelée via FirebaseMessaging. Cette approche gère automatiquement le cycle de vie du token et s'abonne à ses mises à jour.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// Envoi du token au serveur
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Échec de la récupération du token FCM")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
Dans certains scénarios, le token est nécessaire non pas dans le service mais directement dans une Activity ou un ViewModel. Pour cela, getToken() peut être appelé à un point opportun du cycle de vie de l'application. Il est important de ne pas appeler cette méthode depuis le thread principal sans gérer l'asynchronisme.
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")
}
}
}
}
Dans les anciennes versions du SDK Firebase (avant la version 20.x), le token était obtenu via FirebaseInstanceId.getInstance().getToken(). Cette méthode est marquée comme obsolète et n'est pas recommandée pour les nouveaux projets. Les développeurs maintenant du code hérité doivent migrer vers l'API FirebaseInstallations.
Sur iOS, le processus d'obtention du Registration Token diffère architecturalement — FCM fonctionne via l'Apple Push Notification service (APNs). Le SDK Firebase reçoit un token d'appareil unique d'APNs, le convertit au format FCM et le transmet à l'application.
Pour utiliser FCM sur iOS, vous devez configurer un certificat ou une clé APNs dans la console Firebase. L'application doit demander l'autorisation de notifications via UNUserNotificationCenter. Après avoir reçu le token APNs, le SDK Firebase génère automatiquement le 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)
}
}
Le Registration Token sur iOS est plus petit que le token Android, car il est basé sur le token d'appareil APNs. Le SDK Firebase met automatiquement à jour le token FCM lorsque le token APNs change, ce qui se produit lors de la restauration d'un appareil à partir d'une sauvegarde ou de la réinstallation de l'application.
La gestion du cycle de vie du Registration Token est une tâche critique pour une distribution fiable des notifications push. Si le serveur stocke un token obsolète, les notifications ne seront pas distribuées et Firebase retournera une erreur UNREGISTERED.
Le SDK Firebase fournit deux mécanismes pour suivre les changements de token. Sur Android, le callback onNewToken dans FirebaseMessagingService est utilisé. Sur iOS, le délégué messaging:didReceiveRegistrationToken est utilisé. Les deux sont appelés à chaque mise à jour du token.
// Sauvegarde du token dans SharedPreferences et envoi au serveur
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)
}
}
Le serveur doit stocker le Registration Token associé à l'identifiant utilisateur. Lorsque le token est mis à jour, le client envoie le nouveau token au serveur, et le serveur remplace l'ancien. Il est recommandé de conserver un historique des tokens : si une notification n'est pas livrée au nouveau token, l'ancien peut être essayé.
Firebase peut retourner une erreur d'obtention de token dans plusieurs cas. Absence de Google Play Services sur l'appareil — le token ne sera pas obtenu. Dépassement du quota de requêtes à FCM — il est nécessaire d'implémenter un backoff exponentiel lors des tentatives. Expiration du token — le SDK demande automatiquement un nouveau.
| Situation | Résultat | Action du développeur |
|---|---|---|
| Suppression de l'application | Token révoqué | Supprimer le token de la base de données |
| Restauration depuis une sauvegarde | Nouveau token | Mettre à jour dans la base de données |
| Réinitialisation de Google Play Services | Token régénéré | Traiter onNewToken |
| Expiration du token | Mise à jour automatique | S'abonner aux mises à jour |
Questions fréquentes
Vérifiez la disponibilité de Google Play Services sur l'appareil, l'exactitude du fichier google-services.json et la version du SDK Firebase. Assurez-vous que l'application a la permission d'accès à Internet.
Le token peut changer lors de la désinstallation et de la réinstallation de l'application, de l'effacement des données, de la restauration à partir d'une sauvegarde ou de la connexion avec un compte Google différent. Il n'y a pas d'intervalle de temps fixe.
Oui, chaque application sur l'appareil reçoit son propre token FCM. Si un appareil dispose de trois applications avec Firebase, chacune aura son propre Registration Token unique.
Envoyez une notification de test via la console Firebase ou l'API HTTP FCM. Si le token est invalide, l'API retournera une erreur UNREGISTERED ou NOT_FOUND.
Un Registration Token n'est pas une clé secrète, mais sa fuite permet d'envoyer des notifications sur l'appareil de l'utilisateur. Stockez les tokens dans une base de données sécurisée et utilisez HTTPS pour la transmission.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi