Registration Token v push notifikacích: co to je, způsoby získání a aktualizace

Autor: IT Sectr Publikováno: 2026-03-21 Doba čtení: 8 min

Registration Token je jedinečný identifikátor zařízení, který Firebase Cloud Messaging (FCM) používá pro doručování push notifikací. Každá aplikace na každém zařízení získává vlastní token, bez kterého je odesílání notifikací nemožné. Podle Firebase, 2025 je Registration Token automaticky generován při prvním spuštění aplikace a může se za určitých podmínek změnit.

Hlavní body

  • Registration Token — řetězec, který identifikuje instanci aplikace na konkrétním zařízení pro FCM.
  • Token je automaticky generován při prvním spuštění nebo po smazání dat aplikace.
  • FCM používá token pro směrování push notifikací na správné zařízení.
  • Token se může změnit — aplikace by se měla přihlásit k odběru aktualizací prostřednictvím onNewToken.
  • Pro odesílání notifikací musí serverová část ukládat aktuální tokeny všech zařízení.

Co je Registration Token

Registration Token — jedinečný řetězec o délce až 4096 znaků, který Firebase Cloud Messaging přiděluje každé instanci aplikace. Token je vytvořen na základě identifikátoru aplikace, zařízení a účtu Google na zařízení.

Struktura a účel tokenu

Registration Token se skládá z náhodné sekvence znaků zakódovaných ve formátu Base64. FCM používá tento token jako doručovací adresu — serverová část odešle notifikaci na token a FCM ji směruje na konkrétní zařízení. Bez tokenu nelze adresovat push notifikaci konkrétnímu uživateli.

Rozdíly od ostatních identifikátorů

Registration Token by neměl být zaměňován s Device ID (IMEI) nebo Advertising ID. Device ID je hardwarový identifikátor zařízení a Advertising ID se používá pro reklamní účely. Registration Token je vázán na kombinaci aplikace a zařízení, přičemž jedno zařízení může mít několik tokenů pro různé aplikace.

IdentifikátorÚčelProměnlivost
Registration TokenDoručování push notifikací FCMMůže se změnit
Device ID (IMEI)Identifikace zařízeníTrvalý
Advertising IDCílená reklamaMůže být resetován
Instance IDZastaralý mechanismus FirebaseMěnil se při smazání

Kdy je token považován za neplatný

FCM může prohlásit Registration Token za neplatný v několika situacích. Pokud je aplikace ze zařízení odstraněna, token je automaticky zneplatněn. Při obnovení dat ze zálohy na novém zařízení přestane starý token fungovat. Firebase vrací stav UNREGISTERED při pokusu o odeslání notifikace na zastaralý token.

Jak FCM přiděluje Registration Token

Firebase Cloud Messaging generuje Registration Token při prvním spuštění aplikace, když je zavolána metoda getToken(). Proces zahrnuje ověření přihlašovacích údajů Google Play Services a registraci aplikace v infrastruktuře Firebase.

Proces registrace zařízení

Když zařízení poprvé spustí aplikaci s integrovaným FCM SDK, dojde k následujícímu. Firebase SDK zkontroluje přítomnost Google Play Services na zařízení. Poté SDK odešle požadavek na servery Firebase, předávající identifikátor aplikace a informace o zařízení. Server Firebase vytvoří nový token a vrátí jej aplikaci.

Vnitřní mechanika FCM

FCM používá architekturu založenou na dlouhodobých připojeních. Po obdržení Registration Token zařízení vytvoří trvalé připojení k serverům Firebase prostřednictvím protokolu STOMP na Androidu nebo kanálu APNs na iOS. Když serverová část odešle notifikaci na token, FCM najde zařízení podle tokenu a předá užitečné zatížení.

Podmínky regenerace tokenu

Registration Token může být FCM regenerován v následujících případech. Při obnovení aplikace ze zálohy na novém zařízení. Při smazání a opětovné instalaci aplikace. Při vymazání dat aplikace prostřednictvím systémových nastavení. Při přihlášení k jinému účtu Google na zařízení. Firebase doporučuje vždy zpracovávat callback onNewToken pro sledování změn.

Získání Registration Token na Androidu

Na Androidu se Registration Token získává prostřednictvím Firebase Messaging SDK. Proces se liší pro různé verze SDK — v nových verzích se používá FirebaseInstallations API místo zastaralého FirebaseInstanceId.

Moderní způsob prostřednictvím FirebaseInstallations

Od Firebase SDK verze 21.0.0 je metoda getToken() volána prostřednictvím FirebaseMessaging. Tento přístup automaticky spravuje životní cyklus tokenu a přihlásí se k jeho aktualizacím.

kotlin
class MyFirebaseMessagingService : FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendRegistrationToServer(token)
    }

    private fun sendRegistrationToServer(token: String) {
        // Odeslání tokenu na serverovou stranu
        Log.d("FCM", "New token: $token")
    }

    init {
        FirebaseMessaging.getInstance()
            .getToken()
            .addOnCompleteListener { task ->
                if (!task.isSuccessful) {
                    Log.w("FCM", "Získání FCM tokenu se nezdařilo")
                    return@addOnCompleteListener
                }
                val token = task.result
                sendRegistrationToServer(token)
            }
    }
}

Zpracování tokenu v Activity nebo ViewModel

V některých scénářích je token vyžadován nikoli ve službě, ale přímo v Activity nebo ViewModel. Za tímto účelem lze getToken() zavolat na vhodném místě životního cyklu aplikace. Je důležité nevolat tuto metodu z hlavního vlákna bez řešení asynchronnosti.

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

Zastaralá metoda FirebaseInstanceId

Ve starých verzích Firebase SDK (před verzí 20.x) byl token získáván prostřednictvím FirebaseInstanceId.getInstance().getToken(). Tato metoda je označena jako deprecated a nedoporučuje se pro nové projekty. Vývojáři udržující legacy kód by měli migrovat na FirebaseInstallations API.

Získání Registration Token na iOS

Na iOS se proces získání Registration Token architektonicky liší — FCM pracuje prostřednictvím Apple Push Notification service (APNs). Firebase SDK obdrží od APNs jedinečný device token, převede jej do formátu FCM a předá aplikaci.

Konfigurace APNs a získání tokenu

Pro fungování FCM na iOS je třeba nakonfigurovat APNs certifikát nebo klíč v konzoli Firebase. Aplikace musí požádat o povolení pro notifikace prostřednictvím UNUserNotificationCenter. Po obdržení APNs tokenu Firebase SDK automaticky generuje 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)
    }
}

Rozdíly mezi tokenem iOS a Android

Registration Token na iOS má menší velikost ve srovnání s tokenem Android, protože je založen na APNs device token. Firebase SDK automaticky aktualizuje FCM token při změně APNs tokenu, což nastává při obnovení zařízení ze zálohy nebo při přeinstalaci aplikace.

Aktualizace a správa Registration Token

Správa životního cyklu Registration Token je kriticky důležitý úkol pro stabilní doručování push notifikací. Pokud serverová část ukládá zastaralý token, notifikace nebudou doručeny a Firebase vrátí chybu UNREGISTERED.

Sledování změn tokenu

Firebase SDK nabízí dva mechanismy pro sledování změn tokenu. Na Androidu se používá callback onNewToken ve FirebaseMessagingService. Na iOS — delegát messaging:didReceiveRegistrationToken. Oba jsou volány při každé aktualizaci tokenu.

kotlin
// Uložení tokenu do SharedPreferences a odeslání na server
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)
    }
}

Strategie ukládání tokenů na serveru

Serverová část by měla ukládat Registration Token ve spojení s identifikátorem uživatele. Při aktualizaci tokenu klient odešle nový token serveru a server nahradí starý. Doporučuje se uchovávat historii tokenů: pokud notifikace nebyla doručena na nový token, lze zkusit starý.

Zpracování chyb při práci s tokenem

Firebase může vrátit chybu získání tokenu v několika případech. Absence Google Play Services na zařízení — token nebude získán. Překročení kvóty požadavků na FCM — je třeba implementovat exponenciální zpoždění při opakovaných pokusech. Vypršení tokenu — SDK automaticky požádá o nový.

SituaceVýsledekAkce vývojáře
Odstranění aplikaceToken zneplatněnOdstranit token z databáze
Obnovení ze zálohyNový tokenAktualizovat v databázi
Reset Google Play ServicesToken regenerovánZpracovat onNewToken
Vypršení tokenuAutomatická aktualizacePřihlásit se k aktualizacím

Nejčastější dotazy

Co dělat, pokud Registration Token nebyl získán?

Zkontrolujte přítomnost Google Play Services na zařízení, správnost souboru google-services.json a verzi Firebase SDK. Ujistěte se, že aplikace má oprávnění k přístupu k internetu.

Jak často se Registration Token mění?

Token se může změnit při smazání a přeinstalaci aplikace, vymazání dat, obnovení ze zálohy nebo přihlášení k jinému účtu Google. Neexistuje pevný časový interval.

Může mít jedno zařízení několik Registration Tokenů?

Ano, každá aplikace na zařízení získává vlastní FCM token. Pokud jsou na zařízení nainstalovány tři aplikace s Firebase, každá bude mít svůj vlastní jedinečný Registration Token.

Jak zkontrolovat, zda je Registration Token stále platný?

Odešlete testovací notifikaci prostřednictvím konzole Firebase nebo FCM HTTP API. Pokud je token neplatný, API vrátí chybu UNREGISTERED nebo NOT_FOUND.

Je bezpečné ukládat Registration Token na serveru?

Registration Token není tajný klíč, ale jeho únik umožňuje odesílání notifikací na zařízení uživatele. Ukládejte tokeny v chráněné databázi a pro přenos používejte HTTPS.

Shrnutí

  • Registration Token — povinný prvek pro doručování push notifikací prostřednictvím Firebase Cloud Messaging.
  • Token je automaticky generován při prvním spuštění aplikace s FCM SDK.
  • Na Androidu je token získáván prostřednictvím FirebaseMessaging.getInstance().getToken().
  • Na iOS je token založen na APNs device token a předává se prostřednictvím delegáta MessagingDelegate.
  • Token se může změnit — aplikace by měla zpracovávat callback onNewToken.
  • Serverová část by měla ukládat aktuální tokeny a odstraňovat zastaralé při chybě UNREGISTERED.
  • Pro spolehlivé doručování implementujte sledování změn tokenu a mechanismus opakovaných pokusů při selhání.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také