Registration Token ist eine eindeutige Gerätekennung, die Firebase Cloud Messaging (FCM) zur Zustellung von Push-Benachrichtigungen verwendet. Jede App auf jedem Gerät erhält ihren eigenen Token, ohne den das Senden von Benachrichtigungen unmöglich ist. Laut Firebase, 2025 wird der Registration Token beim ersten Start der App automatisch generiert und kann sich unter bestimmten Bedingungen ändern.
Wichtige Punkte
Registration Token ist eine eindeutige Zeichenfolge mit einer Länge von bis zu 4096 Zeichen, die Firebase Cloud Messaging jeder App-Instanz zuweist. Der Token wird basierend auf der Anwendungs-ID, der Geräte-ID und dem Google-Konto auf dem Gerät gebildet.
Ein Registration Token besteht aus einer zufälligen Zeichenfolge, die im Base64-Format codiert ist. FCM verwendet diesen Token als Zustelladresse — der Server sendet eine Benachrichtigung an den Token, und FCM leitet sie an das entsprechende Gerät weiter. Ohne einen Token ist es unmöglich, eine Push-Benachrichtigung an einen bestimmten Benutzer zu adressieren.
Ein Registration Token sollte nicht mit der Device ID (IMEI) oder der Advertising ID verwechselt werden. Die Device ID ist eine Hardware-Kennung des Geräts, während die Advertising ID für Werbezwecke verwendet wird. Der Registration Token ist an die Kombination von App und Gerät gebunden, und ein Gerät kann mehrere Tokens für verschiedene Apps haben.
| Kennung | Zweck | Veränderbarkeit |
|---|---|---|
| Registration Token | FCM-Push-Benachrichtigungszustellung | Kann sich ändern |
| Device ID (IMEI) | Hardware-Identifikation | Permanent |
| Advertising ID | Targeted Advertising | Kann zurückgesetzt werden |
| Instance ID | Legacy-Firebase-Mechanismus | Änderte sich bei Löschung |
FCM kann einen Registration Token in mehreren Situationen als ungültig betrachten. Wenn die App vom Gerät entfernt wird, wird der Token automatisch widerrufen. Bei der Wiederherstellung von Daten aus einem Backup auf einem neuen Gerät funktioniert der alte Token nicht mehr. Firebase gibt außerdem den Status UNREGISTERED zurück, wenn versucht wird, eine Benachrichtigung an einen veralteten Token zu senden.
Firebase Cloud Messaging generiert einen Registration Token, wenn die App zum ersten Mal gestartet und die Methode getToken() aufgerufen wird. Der Prozess umfasst die Überprüfung der Google Play Services-Anmeldeinformationen und die Registrierung der App in der Firebase-Infrastruktur.
Wenn ein Gerät zum ersten Mal eine App mit integriertem FCM SDK ausführt, geschieht Folgendes. Das Firebase SDK prüft die Verfügbarkeit von Google Play Services auf dem Gerät. Dann sendet das SDK eine Anfrage an die Firebase-Server, wobei es die Anwendungs-ID und Geräteinformationen übermittelt. Der Firebase-Server erstellt einen neuen Token und gibt ihn an die App zurück.
FCM verwendet eine Architektur, die auf langlebigen Verbindungen basiert. Nach Erhalt eines Registration Token stellt das Gerät eine dauerhafte Verbindung zu den Firebase-Servern her — über das STOMP-Protokoll auf Android oder den APNs-Kanal auf iOS. Wenn der Server eine Benachrichtigung an den Token sendet, findet FCM das Gerät anhand des Tokens und liefert die Nutzlast aus.
Ein Registration Token kann in folgenden Fällen von FCM neu generiert werden. Bei der Wiederherstellung einer App aus einem Backup auf einem neuen Gerät. Beim Löschen und erneuten Installieren der App. Beim Löschen von App-Daten über die Systemeinstellungen. Bei der Anmeldung mit einem anderen Google-Konto auf dem Gerät. Firebase empfiehlt, stets den onNewToken-Callback zu behandeln, um Änderungen zu verfolgen.
Auf Android wird der Registration Token über das Firebase Messaging SDK abgerufen. Der Prozess unterscheidet sich je nach SDK-Version — neuere Versionen verwenden die FirebaseInstallations-API anstelle der veralteten FirebaseInstanceId.
Ab Firebase SDK Version 21.0.0 wird die Methode getToken() über FirebaseMessaging aufgerufen. Dieser Ansatz verwaltet den Token-Lebenszyklus automatisch und abonniert dessen Updates.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// Token an Server senden
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "FCM-Token abrufen fehlgeschlagen")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
In einigen Szenarien wird der Token nicht im Dienst, sondern direkt in einer Activity oder einem ViewModel benötigt. Dazu kann getToken() an einem geeigneten Punkt im App-Lebenszyklus aufgerufen werden. Es ist wichtig, diese Methode nicht vom Hauptthread aus aufzurufen, ohne die Asynchronität zu behandeln.
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")
}
}
}
}
In älteren Versionen des Firebase SDK (vor Version 20.x) wurde der Token über FirebaseInstanceId.getInstance().getToken() abgerufen. Diese Methode ist als veraltet markiert und wird für neue Projekte nicht empfohlen. Entwickler, die Legacy-Code warten, sollten auf die FirebaseInstallations-API migrieren.
Auf iOS unterscheidet sich der Abrufprozess des Registration Token architektonisch — FCM funktioniert über den Apple Push Notification Service (APNs). Das Firebase SDK erhält von APNs einen eindeutigen Gerätetoken, konvertiert ihn in das FCM-Format und übergibt ihn an die App.
Um FCM auf iOS zu verwenden, muss ein APNs-Zertifikat oder -Schlüssel in der Firebase-Konsole konfiguriert werden. Die App muss die Berechtigung für Benachrichtigungen über UNUserNotificationCenter anfordern. Nach Erhalt des APNs-Tokens generiert das Firebase SDK automatisch den 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)
}
}
Der Registration Token auf iOS ist im Vergleich zum Android-Token kleiner, da er auf dem APNs-Gerätetoken basiert. Das Firebase SDK aktualisiert den FCM-Token automatisch, wenn sich der APNs-Token ändert, was bei der Wiederherstellung eines Geräts aus einem Backup oder der Neuinstallation der App geschieht.
Die Verwaltung des Lebenszyklus des Registration Token ist eine kritische Aufgabe für die zuverlässige Zustellung von Push-Benachrichtigungen. Wenn der Server einen veralteten Token speichert, werden Benachrichtigungen nicht zugestellt, und Firebase gibt einen UNREGISTERED-Fehler zurück.
Das Firebase SDK bietet zwei Mechanismen zur Verfolgung von Token-Änderungen. Auf Android wird der onNewToken-Callback in FirebaseMessagingService verwendet. Auf iOS wird der Delegat messaging:didReceiveRegistrationToken verwendet. Beide werden bei jeder Aktualisierung des Tokens aufgerufen.
// Token in SharedPreferences speichern und an Server senden
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)
}
}
Der Server muss den Registration Token in Verbindung mit der Benutzerkennung speichern. Wenn der Token aktualisiert wird, sendet der Client den neuen Token an den Server, und der Server ersetzt den alten. Es wird empfohlen, einen Token-Verlauf zu führen: Wenn eine Benachrichtigung nicht an den neuen Token zugestellt wird, kann der alte versucht werden.
Firebase kann in mehreren Fällen einen Fehler beim Abruf des Tokens zurückgeben. Fehlende Google Play Services auf dem Gerät — der Token wird nicht abgerufen. Überschreitung des Anfragekontingents an FCM — eine exponentielle Verzögerung bei Wiederholungsversuchen muss implementiert werden. Ablauf des Tokens — das SDK fordert automatisch einen neuen an.
| Situation | Ergebnis | Entwickleraktion |
|---|---|---|
| App-Löschung | Token widerrufen | Token aus Datenbank löschen |
| Backup-Wiederherstellung | Neuer Token | In Datenbank aktualisieren |
| Google Play Services zurücksetzen | Token neugeneriert | onNewToken behandeln |
| Token-Ablauf | Automatische Aktualisierung | Updates abonnieren |
Häufig gestellte Fragen
Überprüfen Sie die Verfügbarkeit von Google Play Services auf dem Gerät, die Korrektheit der google-services.json-Datei und die Version des Firebase SDK. Stellen Sie sicher, dass die App über eine Internetberechtigung verfügt.
Der Token kann sich beim Deinstallieren und Neuinstallieren der App, beim Löschen von Daten, bei der Wiederherstellung aus einem Backup oder bei der Anmeldung mit einem anderen Google-Konto ändern. Es gibt kein festes Zeitintervall.
Ja, jede App auf dem Gerät erhält ihren eigenen FCM-Token. Wenn ein Gerät drei Apps mit Firebase hat, hat jede ihren eigenen eindeutigen Registration Token.
Senden Sie eine Testbenachrichtigung über die Firebase-Konsole oder die FCM HTTP API. Wenn der Token ungültig ist, gibt die API einen UNREGISTERED- oder NOT_FOUND-Fehler zurück.
Ein Registration Token ist kein geheimer Schlüssel, aber sein Leck ermöglicht das Senden von Benachrichtigungen an das Gerät des Benutzers. Speichern Sie Tokens in einer sicheren Datenbank und verwenden Sie HTTPS für die Übertragung.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch