A Registration Token egy egyedi eszközazonosító, amelyet a Firebase Cloud Messaging (FCM) használ a push-értesítések kézbesítéséhez. Minden alkalmazás minden eszközön megkapja a saját tokenjét, amely nélkül az értesítések küldése lehetetlen. A Firebase, 2025 szerint a Registration Token automatikusan generálódik az alkalmazás első indításakor, és bizonyos körülmények között megváltozhat.
Főbb pontok
Registration Token — egy egyedi, legfeljebb 4096 karakterből álló string, amelyet a Firebase Cloud Messaging minden alkalmazáspéldányhoz hozzárendel. A token az alkalmazás, az eszköz és az eszközön lévő Google-fiók azonosítója alapján kerül kialakításra.
A Registration Token véletlenszerű karakterek Base64 formátumba kódolt sorozatából áll. Az FCM ezt a tokent kézbesítési címként használja — a szerveroldal értesítést küld a tokenre, az FCM pedig a megfelelő eszközre irányítja. Token nélkül nem lehet push-értesítést címezni egy adott felhasználónak.
A Registration Token nem tévesztendő össze a Device ID-vel (IMEI) vagy az Advertising ID-vel. A Device ID az eszköz hardverazonosítója, az Advertising ID-t pedig reklámcélokra használják. A Registration Token az alkalmazás és az eszköz kombinációjához kötődik, és egy eszköz több tokennal is rendelkezhet különböző alkalmazások számára.
| Azonosító | Cél | Változékonyság |
|---|---|---|
| Registration Token | FCM push-értesítések kézbesítése | Megváltozhat |
| Device ID (IMEI) | Eszköz azonosítása | Állandó |
| Advertising ID | Célzott reklám | Visszaállítható |
| Instance ID | Elavult Firebase mechanizmus | Törléskor változott |
Az FCM több helyzetben is érvénytelennek nyílváníthatja a Registration Tokent. Ha az alkalmazást eltávolítják az eszközről, a token automatikusan érvénytelenítődik. Biztonsági másolatból történő adatvisszaállításkor új eszközön a régi token működése megszűnik. A Firebase UNREGISTERED állapotot ad vissza, amikor egy elavult tokenre próbálnak értesítést küldeni.
Firebase Cloud Messaging a Registration Tokent az alkalmazás első indításakor generálja, amikor a getToken() metódust meghívják. A folyamat magában foglalja a Google Play Services hitelesítő adatainak ellenőrzését és az alkalmazás regisztrálását a Firebase infrastruktúrában.
Amikor az eszköz első alkalommal futtatja az integrált FCM SDK-val rendelkező alkalmazást, a következő történik. A Firebase SDK ellenőrzi a Google Play Services meglétét az eszközön. Ezután az SDK kérést küld a Firebase szervereinek, átadva az alkalmazás azonosítóját és az eszköz információit. A Firebase szerver létrehoz egy új tokent és visszaküldi az alkalmazásnak.
Az FCM hosszú élettartamú kapcsolatokon alapuló architektúrát használ. A Registration Token kézhez vétele után az eszköz állandó kapcsolatot létesít a Firebase szerverekkel Androidon a STOMP protokoll, iOS-en pedig az APNs csatorna segítségével. Amikor a szerveroldal értesítést küld a tokenre, az FCM megtalálja az eszközt a token alapján és továbbítja a hasznos terhet.
A Registration Token a következő esetekben újragenerálható az FCM által. Az alkalmazás biztonsági másolatból történő visszaállításakor új eszközön. Az alkalmazás eltávolításakor és újratelepítésekor. Az alkalmazás adatainak rendszerbeállításokon keresztül történő törlésekor. Másik Google-fiókba történő bejelentkezéskor az eszközön. A Firebase azt javasolja, hogy mindig kezelje az onNewToken visszahívást a változások követéséhez.
Androidon a Registration Token a Firebase Messaging SDK-n keresztül szerezhető meg. A folyamat eltér a különböző SDK-verzióknél — az újabb verziókban a FirebaseInstallations API-t használják az elavult FirebaseInstanceId helyett.
A Firebase SDK 21.0.0 verziójától kezdve a getToken() metódust a FirebaseMessaging-en keresztül hívják. Ez a megközelítés automatikusan kezeli a token életciklusát és feliratkozik annak frissítéseire.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// Token küldése a szerveroldalra
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Az FCM token lekérése sikertelen")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
Bizonyos forgatókönyvekben a tokenre nem a szolgáltatásban, hanem közvetlenül az Activity-ben vagy ViewModel-ben van szükség. Ehhez a getToken() az alkalmazás életciklusának megfelelő helyén hívható. Fontos, hogy ezt a metódust ne hívja a fő szálból az aszinkronitás kezelése nélkül.
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")
}
}
}
}
A Firebase SDK régebbi verzióiban (a 20.x verzió előtt) a token a FirebaseInstanceId.getInstance().getToken() segítségével volt megszerezhető. Ez a metódus deprecatedként van megjelölve, és új projektekben nem ajánlott. Az örökölt kódot karbantartó fejlesztőknek át kell állniuk a FirebaseInstallations API-ra.
iOS-en a Registration Token megszerzésének folyamata építészetileg eltér — az FCM az Apple Push Notification service (APNs) segítségével működik. A Firebase SDK egy egyedi eszköztokent kap az APNs-től, átalakítja FCM formátumba, és továbbítja az alkalmazásnak.
Az FCM iOS-en történő működéséhez APNs tanúsítványt vagy kulcsot kell konfigurálni a Firebase konzolban. Az alkalmazásnak engedélyt kell kérnie az értesítésekhez az UNUserNotificationCenter-en keresztül. Az APNs token kézhez vétele után a Firebase SDK automatikusan generálja a Registration Tokent.
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)
}
}
Az iOS Registration Token kisebb méretű az Android tokenhez képest, mivel az APNs eszköztokenen alapul. A Firebase SDK automatikusan frissíti az FCM tokent az APNs token változásakor, ami az eszköz biztonsági másolatból történő visszaállításakor vagy az alkalmazás újratelepítésekor történik.
A Registration Token életciklusának kezelése kritikus feladat a push-értesítések stabil kézbesítéséhez. Ha a szerveroldal elavult tokent tárol, az értesítések nem kerülnek kézbesítésre, és a Firebase UNREGISTERED hibát ad vissza.
A Firebase SDK két mechanizmust kínál a token változásainak követésére. Androidon az onNewToken visszahívást használják a FirebaseMessagingService-ben. iOS-en — a messaging:didReceiveRegistrationToken delegáltat. Mindkettő minden tokenfrissítéskor meghívásra kerül.
// Token mentése SharedPreferences-be és elküldése a szerverre
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)
}
}
A szerveroldalnak a Registration Tokent a felhasználó azonosítójával összefüggésben kell tárolnia. A token frissítésekor az ügyfél elküldi az új tokent a szervernek, a szerver pedig lecseréli a régit. Javasolt a tokentörténet megőrzése: ha az értesítés nem érkezett meg az új tokenre, megpróbálható a régi.
A Firebase több esetben is hibát adhat vissza a token megszerzésekor. A Google Play Services hiánya az eszközön — a token nem szerezhető meg. Az FCM kéréskvóta túllépése — exponenciális késleltetést kell alkalmazni az újrapróbálkozásoknál. A token lejárta — az SDK automatikusan újat kér.
| Helyzet | Eredmény | Fejlesztői művelet |
|---|---|---|
| Alkalmazás eltávolítása | Token érvénytelenítve | Token törlése az adatbázisból |
| Visszaállítás biztonsági másolatból | Új token | Frissítés az adatbázisban |
| Google Play Services visszaállítása | Token újragenerálódott | onNewToken kezelése |
| Token lejárta | Automatikus frissítés | Feliratkozás a frissítésekre |
Gyakran Ismételt Kérdések
Ellenőrizze a Google Play Services meglétét az eszközön, a google-services.json fájl helyességét és a Firebase SDK verzióját. Győződjön meg arról, hogy az alkalmazás rendelkezik internet-hozzáférési engedéllyel.
A token változhat az alkalmazás eltávolításakor és újratelepítésekor, adatok törlésekor, biztonsági másolatból történő visszaállításkor vagy másik Google-fiókba történő bejelentkezéskor. Nincs szigorú időintervallum.
Igen, minden alkalmazás az eszközön megkapja a saját FCM tokenjét. Ha három Firebase-es alkalmazás van telepítve az eszközön, mindegyik rendelkezni fog a saját egyedi Registration Tokenjével.
Küldjön tesztértesítést a Firebase konzolon vagy az FCM HTTP API-n keresztül. Ha a token érvénytelen, az API UNREGISTERED vagy NOT_FOUND hibát ad vissza.
A Registration Token nem titkos kulcs, de kiszivárgása lehetővé teszi értesítések küldését a felhasználó eszközére. Tárolja a tokeneket védett adatbázisban, és használjon HTTPS-t az átvitelhez.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is