Registration Token у push обавештењима: шта је то, начини добијања и ажурирања

Аутор: 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 препоручује да увијек обрадјујете callback 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-у користи се callback 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.
  • Токен се може мењати — апликација треба да обрађује callback onNewToken.
  • Серверски део треба да чува ажурне токене и брише застареле при грешци UNREGISTERED.
  • За поуздану доставу, имплементирајте праћење промена токена и механизам поновних покушаја при неуспехима.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође