Registration Token у пуш-сповіщеннях: що це, способи отримання та оновлення

Автор: IT Sectr Опубліковано: 2026-03-21 Час читання: 8 хв

Registration Token — унікальний ідентифікатор пристрою, який Firebase Cloud Messaging (FCM) використовує для доставки push-сповіщень. Кожен додаток на кожному пристрої отримує власний токен, без якого надсилання сповіщень неможливе. За даними Firebase, 2025, Registration Token автоматично генерується при першому запуску додатка і може змінюватися за певних умов.

Головне

  • Registration Token — рядок, що ідентифікує екземпляр додатка на конкретному пристрої для FCM.
  • Токен генерується автоматично при першому запуску або після видалення даних додатка.
  • FCM використовує токен для маршрутизації push-сповіщень на правильний пристрій.
  • Токен може змінюватися — додаток має підписуватися на оновлення через onNewToken.
  • Для надсилання сповіщень серверна частина повинна зберігати актуальні токени всіх пристроїв.

Що таке Registration Token

Registration Token — це унікальний рядок довжиною до 4096 символів, який Firebase Cloud Messaging призначає кожному екземпляру додатка. Токен формується на основі ідентифікатора додатка, пристрою та облікового запису Google на пристрої.

Структура та призначення токена

Registration Token складається з випадкової послідовності символів, закодованих у форматі Base64. FCM використовує цей токен як адресу доставки — серверна частина надсилає сповіщення на токен, а FCM маршрутизує його на конкретний пристрій. Без токена неможливо адресувати push-сповіщення конкретному користувачеві.

Відмінності від інших ідентифікаторів

Registration Token не слід плутати з Device ID (IMEI) або Advertising ID. Device ID — це апаратний ідентифікатор пристрою, а Advertising ID використовується для рекламних цілей. Registration Token прив'язаний саме до комбінації додатка та пристрою, причому один пристрій може мати кілька токенів для різних додатків.

ІдентифікаторПризначенняЗмінюваність
Registration TokenДоставка push-сповіщень FCMМоже змінюватися
Device ID (IMEI)Ідентифікація апаратаПостійний
Advertising IDТаргетована рекламаМоже бути скинутий
Instance IDЗастарілий механізм FirebaseЗмінювався при видаленні

Коли токен вважається недійсним

FCM може визнати Registration Token недійсним у кількох ситуаціях. Якщо додаток видалено з пристрою, токен автоматично анулюється. При відновленні даних з резервної копії на новому пристрої старий токен перестає працювати. Також Firebase повертає статус UNREGISTERED при спробі надіслати сповіщення на застарілий токен.

Як FCM призначає Registration Token

Firebase Cloud Messaging генерує Registration Token при першому запуску додатка, коли викликається метод getToken(). Процес включає перевірку облікових даних Google Play Services та реєстрацію додатка в інфраструктурі Firebase.

Процес реєстрації пристрою

Коли пристрій вперше запускає додаток з інтегрованим FCM SDK, відбувається наступне. Firebase SDK перевіряє наявність Google Play Services на пристрої. Потім SDK надсилає запит на сервери Firebase, передаючи ідентифікатор додатка та інформацію про пристрій. Сервер Firebase створює новий токен і повертає його додатку.

Внутрішня механіка FCM

FCM використовує архітектуру, засновану на довгоживучих з'єднаннях. Після отримання Registration Token пристрій встановлює постійне з'єднання з серверами Firebase через STOMP-протокол на Android або APNs-канал на iOS. Коли серверна частина надсилає сповіщення на токен, FCM знаходить пристрій за токеном і передає корисне навантаження.

Умови перегенерації токена

Registration Token може бути перегенерований FCM у наступних випадках. При відновленні додатка з резервної копії на новому пристрої. При видаленні та повторній установці додатка. При очищенні даних додатка через системні налаштування. При вході в інший обліковий запис Google на пристрої. Firebase рекомендує завжди обробляти колбек onNewToken для відстеження змін.

Отримання Registration Token на Android

На Android Registration Token отримується через Firebase Messaging SDK. Процес відрізняється для різних версій SDK — у нових версіях використовується FirebaseInstallations API замість застарілого FirebaseInstanceId.

Сучасний спосіб через FirebaseInstallations

Починаючи з Firebase SDK версії 21.0.0, метод getToken() викликається через FirebaseMessaging. Цей підхід автоматично керує життєвим циклом токена та підписується на його оновлення.

kotlin
class MyFirebaseMessagingService : FirebaseMessagingService() {

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

    private fun sendRegistrationToServer(token: String) {
        // Надсилання токена на серверну частину
        Log.d("FCM", "New token: $token")
    }

    init {
        FirebaseMessaging.getInstance()
            .getToken()
            .addOnCompleteListener { task ->
                if (!task.isSuccessful) {
                    Log.w("FCM", "Не вдалося отримати FCM токен")
                    return@addOnCompleteListener
                }
                val token = task.result
                sendRegistrationToServer(token)
            }
    }
}

Обробка токена в Activity або ViewModel

У деяких сценаріях токен потрібен не в сервісі, а безпосередньо в Activity або ViewModel. Для цього можна викликати getToken() у зручному місці життєвого циклу додатка. Важно не викликати цей метод з основного потоку без обробки асинхронності.

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

Застарілий метод FirebaseInstanceId

У старих версіях Firebase SDK (до версії 20.x) токен отримувався через FirebaseInstanceId.getInstance().getToken(). Цей метод позначений як deprecated і не рекомендується до використання в нових проектах. Розробникам, які підтримують legacy-код, слід мігрувати на FirebaseInstallations API.

Отримання Registration Token на iOS

На iOS процес отримання Registration Token відрізняється архітектурно — FCM працює через Apple Push Notification service (APNs). Firebase SDK отримує від APNs унікальний device token, конвертує його у формат FCM і передає додатку.

Налаштування APNs та отримання токена

Для роботи FCM на iOS необхідно налаштувати APNs-сертифікат або ключ у консолі Firebase. Додаток має запросити дозвіл на сповіщення через UNUserNotificationCenter. Після отримання APNs-токена Firebase SDK автоматично генерує 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)
    }
}

Відмінності iOS-токена від Android

Registration Token на iOS має менший розмір порівняно з Android-токеном, оскільки базується на APNs device token. Firebase SDK автоматично оновлює FCM-токен при зміні APNs-токена, що відбувається при відновленні пристрою з резервної копії або переустановці додатка.

Оновлення та керування Registration Token

Керування життєвим циклом Registration Token — критично важливе завдання для стабільної доставки push-сповіщень. Якщо серверна частина зберігає застарілий токен, сповіщення не будуть доставлені, а Firebase поверне помилку UNREGISTERED.

Моніторинг змін токена

Firebase SDK надає два механізми для відстеження змін токена. На Android використовується колбек onNewToken у FirebaseMessagingService. На iOS — делегат messaging:didReceiveRegistrationToken. Обидва викликаються при кожному оновленні токена.

kotlin
// Збереження токена в SharedPreferences та надсилання на сервер
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)
    }
}

Стратегія зберігання токенів на сервері

Серверна частина повинна зберігати Registration Token у зв'язці з ідентифікатором користувача. При оновленні токена клієнт надсилає на сервер новий токен, а сервер замінює старий. Рекомендується зберігати історію токенів: якщо сповіщення не доставлено на новий токен, можна спробувати старий.

Обробка помилок при роботі з токеном

Firebase може повернути помилку отримання токена в кількох випадках. Відсутність Google Play Services на пристрої — токен не буде отримано. Перевищення квоти запитів до FCM — необхідно впровадити експоненційну затримку при повторних спробах. Закінчення терміну дії токена — SDK автоматично запитує новий.

СитуаціяРезультатДія розробника
Видалення додаткаТокен анулюєтьсяВидалити токен із бази
Відновлення з бекапуНовий токенОновити в базі
Скидання Google Play ServicesТокен перегенерованоОбробити onNewToken
Закінчення терміну токенаАвтоматичне оновленняПідписатися на оновлення

Часті запитання

Що робити, якщо Registration Token не отримано?

Перевірте наявність Google Play Services на пристрої, правильність файлу google-services.json та версію Firebase SDK. Переконайтеся, що додаток має дозвіл на інтернет.

Як часто змінюється Registration Token?

Токен може змінюватися при видаленні та повторній установці додатка, очищенні даних, відновленні з резервної копії або вході в інший обліковий запис Google. Жорсткого часового інтервалу немає.

Чи може один пристрій мати кілька Registration Token?

Так, кожен додаток на пристрої отримує власний токен FCM. Якщо на пристрої встановлено три додатки з Firebase, кожен матиме свій унікальний Registration Token.

Як перевірити, що Registration Token ще дійсний?

Надішліть тестове сповіщення через консоль Firebase або FCM HTTP API. Якщо токен недійсний, API поверне помилку UNREGISTERED або NOT_FOUND.

Чи безпечно зберігати Registration Token на сервері?

Registration Token не є секретним ключем, але його витік дозволяє надсилати сповіщення на пристрій користувача. Зберігайте токени в захищеній базі даних і використовуйте HTTPS для передачі.

Підсумки

  • Registration Token — обов'язковий елемент для доставки push-сповіщень через Firebase Cloud Messaging.
  • Токен генерується автоматично при першому запуску додатка з FCM SDK.
  • На Android токен отримується через FirebaseMessaging.getInstance().getToken().
  • На iOS токен базується на APNs device token і передається через делегат MessagingDelegate.
  • Токен може змінюватися — додаток має обробляти колбек onNewToken.
  • Серверна частина повинна зберігати актуальні токени та видаляти застарілі при помилці UNREGISTERED.
  • Для надійної доставки впровадьте моніторинг змін токена та механізм повторних спроб при збоях.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також