Registration Token är en unik enhetsidentifierare som Firebase Cloud Messaging (FCM) använder för att leverera push-notiser. Varje app på varje enhet får sin egen token, utan vilken det är omöjligt att skicka notiser. Enligt Firebase, 2025 genereras Registration Token automatiskt vid första starten av appen och kan ändras under vissa förhållanden.
Huvudpunkter
Registration Token — en unik sträng på upp till 4096 tecken som Firebase Cloud Messaging tilldelar varje appinstans. Token bildas baserat på identifieraren för appen, enheten och Google-kontot på enheten.
Registration Token består av en slumpmässig sekvens av tecken kodade i Base64-format. FCM använder denna token som leveransadress — serverdelen skickar en notis till token och FCM dirigerar den till den specifika enheten. Utan token är det omöjligt att adressera en push-notis till en specifik användare.
Registration Token ska inte förväxlas med Device ID (IMEI) eller Advertising ID. Device ID är en hårdvaruidentifierare för enheten och Advertising ID används för reklamändamål. Registration Token är kopplad till kombinationen av app och enhet, och en enhet kan ha flera tokens för olika appar.
| Identifierare | Syfte | Föränderlighet |
|---|---|---|
| Registration Token | Leverans av FCM-push-notiser | Kan ändras |
| Device ID (IMEI) | Enhetsidentifiering | Permanent |
| Advertising ID | Riktad reklam | Kan återställas |
| Instance ID | Föråldrad Firebase-mekanism | Ändrades vid borttagning |
FCM kan förklara Registration Token ogiltig i flera situationer. Om appen tas bort från enheten återkallas token automatiskt. Vid återställning av data från en backup på en ny enhet slutar den gamla token att fungera. Firebase returnerar status UNREGISTERED vid försök att skicka en notis till en föråldrad token.
Firebase Cloud Messaging genererar Registration Token vid första starten av appen när metoden getToken() anropas. Processen omfattar verifiering av Google Play Services-autentiseringsuppgifter och registrering av appen i Firebase-infrastrukturen.
När enheten första gången kör appen med integrerad FCM SDK händer följande. Firebase SDK kontrollerar förekomsten av Google Play Services på enheten. Sedan skickar SDK en begäran till Firebaseservrar och överför appens identifierare och enhetsinformation. Firebaseservern skapar en ny token och returnerar den till appen.
FCM använder en arkitektur baserad på långvariga anslutningar. Efter mottagandet av Registration Token upprättar enheten en permanent anslutning till Firebaseservrar via STOMP-protokollet på Android eller APNs-kanalen på iOS. När serverdelen skickar en notis till token hittar FCM enheten via token och levererar nyttolasten.
Registration Token kan regenereras av FCM i följande fall. Vid återställning av appen från en backup på en ny enhet. Vid borttagning och ominstallation av appen. Vid rensning av appdata via systeminställningar. Vid inloggning på ett annat Google-konto på enheten. Firebase rekommenderar att alltid bearbeta callbacken onNewToken för att spåra ändringar.
På Android hämtas Registration Token via Firebase Messaging SDK. Processen skiljer sig för olika SDK-versioner — i nyare versioner används FirebaseInstallations API istället för den föråldrade FirebaseInstanceId.
Från och med Firebase SDK version 21.0.0 anropas metoden getToken() via FirebaseMessaging. Detta tillvägagångssätt hanterar automatiskt tokenens livscykel och prenumererar på dess uppdateringar.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// Skicka token till serverdelen
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Hämtning av FCM-token misslyckades")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
I vissa scenarier behövs token inte i tjänsten utan direkt i Activity eller ViewModel. För detta ändamål kan getToken() anropas på en lämplig plats i appens livscykel. Det är viktigt att inte anropa denna metod från huvudtråden utan att hantera asynkronitet.
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")
}
}
}
}
I gamla versioner av Firebase SDK (före version 20.x) hämtades token via FirebaseInstanceId.getInstance().getToken(). Denna metod är markerad som deprecated och rekommenderas inte för nya projekt. Utvecklare som underhåller legacy-kod bör migrera till FirebaseInstallations API.
På iOS skiljer sig processen för att hämta Registration Token arkitektoniskt — FCM fungerar via Apple Push Notification service (APNs). Firebase SDK tar emot en unik device token från APNs, konverterar den till FCM-format och överför den till appen.
För att FCM ska fungera på iOS måste ett APNs-certifikat eller en nyckel konfigureras i Firebase-konsolen. Appen måste begära tillstånd för notiser via UNUserNotificationCenter. Efter mottagandet av APNs-token genererar Firebase SDK automatiskt 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)
}
}
Registration Token på iOS har en mindre storlek jämfört med Android-token eftersom den är baserad på APNs device token. Firebase SDK uppdaterar automatiskt FCM-token när APNs-token ändras, vilket händer vid återställning av enheten från en backup eller ominstallation av appen.
Hantering av livscykeln för Registration Token är en kritisk uppgift för stabil leverans av push-notiser. Om serverdelen lagrar en föråldrad token kommer notiserna inte att levereras och Firebase returnerar felet UNREGISTERED.
Firebase SDK erbjuder två mekanismer för att spåra tokenändringar. På Android används callbacken onNewToken i FirebaseMessagingService. På iOS — delegaten messaging:didReceiveRegistrationToken. Båda anropas vid varje tokenuppdatering.
// Spara token i SharedPreferences och skicka till servern
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)
}
}
Serverdelen bör lagra Registration Token i kombination med användarens identifierare. Vid tokenuppdatering skickar klienten den nya token till servern och servern ersätter den gamla. Det rekommenderas att behålla tokenhistorik: om en notis inte levererades till den nya token kan den gamla försökas.
Firebase kan returnera ett fel vid hämtning av token i flera fall. Avsaknad av Google Play Services på enheten — token kommer inte att hämtas. Överskridande av FCM-begärankvot — implementera exponentiell fördröjning vid återförsök. Utgången av token — SDK begär automatiskt en ny.
| Situation | Resultat | Utvecklarens åtgärd |
|---|---|---|
| Borttagning av app | Token återkallas | Ta bort token från databasen |
| Återställning från backup | Ny token | Uppdatera i databasen |
| Återställning av Google Play Services | Token regenererad | Bearbeta onNewToken |
| Utgången token | Automatisk uppdatering | Prenumerera på uppdateringar |
Vanliga frågor
Kontrollera förekomsten av Google Play Services på enheten, riktigheten av filen google-services.json och versionen av Firebase SDK. Se till att appen har behörighet att komma åt internet.
Token kan ändras vid borttagning och ominstallation av appen, rensning av data, återställning från backup eller inloggning på ett annat Google-konto. Det finns inget strikt tidsintervall.
Ja, varje app på enheten får sin egen FCM-token. Om det finns tre appar med Firebase installerade på enheten kommer var och en att ha sin egen unika Registration Token.
Skicka en testnotis via Firebase-konsolen eller FCM HTTP API. Om token är ogiltig returnerar API:et felet UNREGISTERED eller NOT_FOUND.
Registration Token är inte en hemlig nyckel, men dess läckage gör det möjligt att skicka notiser till användarens enhet. Förvara tokens i en skyddad databas och använd HTTPS för överföring.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också