Registration Token i push-notiser: vad det är, metoder för inhämtning och uppdatering

Författare: IT Sectr Publicerad: 2026-03-21 Lästid: 8 min

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 sträng som identifierar appinstansen på en specifik enhet för FCM.
  • Token genereras automatiskt vid första starten eller efter att appdata har raderats.
  • FCM använder token för att dirigera push-notiser till rätt enhet.
  • Token kan ändras — appen bör prenumerera på uppdateringar via onNewToken.
  • För att skicka notiser måste serverdelen lagra aktuella tokens för alla enheter.

Vad är Registration Token

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.

Struktur och syfte för token

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.

Skillnader från andra identifierare

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.

IdentifierareSyfteFöränderlighet
Registration TokenLeverans av FCM-push-notiserKan ändras
Device ID (IMEI)EnhetsidentifieringPermanent
Advertising IDRiktad reklamKan återställas
Instance IDFöråldrad Firebase-mekanismÄndrades vid borttagning

När token anses ogiltig

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.

Hur tilldelar FCM Registration 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.

Enhetsregistreringsprocess

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.

Intern mekanik för FCM

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.

Villkor för regenerering av token

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.

Hämta Registration Token på Android

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.

Modern metod via FirebaseInstallations

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.

kotlin
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)
            }
    }
}

Bearbeta token i Activity eller ViewModel

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.

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")
                }
            }
    }
}

Föråldrad metod FirebaseInstanceId

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.

Hämta Registration Token på iOS

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.

Konfiguration av APNs och hämtning av token

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.

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)
    }
}

Skillnader mellan iOS- och Android-token

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.

Uppdatera och hantera Registration Token

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.

Övervakning av tokenändringar

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.

kotlin
// 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)
    }
}

Strategi för tokenlagring på servern

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.

Felhantering vid arbete med token

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.

SituationResultatUtvecklarens åtgärd
Borttagning av appToken återkallasTa bort token från databasen
Återställning från backupNy tokenUppdatera i databasen
Återställning av Google Play ServicesToken regenereradBearbeta onNewToken
Utgången tokenAutomatisk uppdateringPrenumerera på uppdateringar

Vanliga frågor

Vad gör jag om Registration Token inte har hämtats?

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.

Hur ofta ändras Registration Token?

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.

Kan en enhet ha flera Registration Token?

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.

Hur kontrollerar jag om Registration Token fortfarande är giltig?

Skicka en testnotis via Firebase-konsolen eller FCM HTTP API. Om token är ogiltig returnerar API:et felet UNREGISTERED eller NOT_FOUND.

Är det säkert att lagra Registration Token på servern?

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

  • Registration Token — obligatoriskt element för leverans av push-notiser via Firebase Cloud Messaging.
  • Token genereras automatiskt vid första starten av appen med FCM SDK.
  • På Android hämtas token via FirebaseMessaging.getInstance().getToken().
  • På iOS är token baserad på APNs device token och överförs via delegaten MessagingDelegate.
  • Token kan ändras — appen bör bearbeta callbacken onNewToken.
  • Serverdelen bör lagra aktuella tokens och ta bort föråldrade vid felet UNREGISTERED.
  • För tillförlitlig leverans, implementera övervakning av tokenändringar och en mekanism för återförsök vid fel.

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.

Diskutera projektet

Läs också