Registration Token — bu Firebase Cloud Messaging (FCM) tomonidan push-bildirishnomalarni yetkazib berish üçün foydalaniladigan noyob qurilma identifikatoridir. Har bir ilova har bir qurilmada o'z tokenini oladi, usiz bildirishnomalarni yuborish mumkin emas. Firebase, 2025 ma'lumotlariga ko'ra, Registration Token ilovaning birinchi ishga tushirilishida avtomatik ravishda yaratiladi va muayyan sharoitlarda o'zgarishi mumkin.
Asosiy
Registration Token — Firebase Cloud Messaging har bir ilova nusxasiga tayinlaydigan 4096 belgigacha bo'lgan noyob qatordir. Token ilova, qurilma va qurilmadagi Google hisobi identifikatorlari asosida shakllantiriladi.
Registration Token Base64 formatida kodlangan tasodifiy belgilar ketma-ketligidan iborat. FCM bu tokenni yetkazib berish manzili sifatida ishlatadi — server qismi bildirishnomani tokenga yuboradi, FCM esa uni aniq qurilmaga yo'naltiradi. Tokensiz push-bildirishnomani ma'lum bir foydalanuvchiga yo'naltirib bo'lmaydi.
Registration Token Device ID (IMEI) yoki Advertising ID bilan aralashtirilmasligi kerak. Device ID qurilmaning apparat identifikatori, Advertising ID esa reklama maqsadlarida ishlatiladi. Registration Token aynan ilova va qurilma kombinatsiyasiga bog'liq bo'lib, bitta qurilmada turli ilovalar üçün bir nechta token bo'lishi mumkin.
| Identifikator | Vazifa | O'zgaruvchanlik |
|---|---|---|
| Registration Token | FCM push-bildirishnomalarini yetkazib berish | O'zgarishi mumkin |
| Device ID (IMEI) | Qurilmani identifikatsiya qilish | Doimiy |
| Advertising ID | Maqsadli reklama | Qayta tiklanishi mumkin |
| Instance ID | Eskirgan Firebase mexanizmi | O'chirishda o'zgarardi |
FCM Registration Tokenni bir nechta holatlarda haqiqiy emas deb topishi mumkin. Agar ilova qurilmadan o'chirilsa, token avtomatik ravishda bekor qilinadi. Zaxira nusxadan yangi qurilmaga ma'lumotlarni tiklashda eski token ishlamay qoladi. Firebase eskirgan tokenga bildirishnoma yuborishga urinishda UNREGISTERED holatini qaytaradi.
Firebase Cloud Messaging Registration Tokenni ilovaning birinchi ishga tushirilishida, getToken() metodi chaqirilganda yaratadi. Jarayon Google Play Services ma'lumotlarini tekshirish va ilovani Firebase infratuzilmasida ro'yxatdan o'tkazishni o'z ichiga oladi.
Qurilma FCM SDK bilan integratsiyalangan ilovani birinchi marta ishga tushirganda quyidagilar sodir bo'ladi. Firebase SDK qurilmada Google Play Services mavjudligini tekshiradi. So'ngra SDK ilova identifikatori va qurilma haqida ma'lumotni uzatgan holda Firebase serverlariga so'rov yuboradi. Firebase serveri yangi token yaratadi va uni ilovaga qaytaradi.
FCM uzoq muddatli ulanishlarga asoslangan arxitekturadan foydalanadi. Registration Token olingandan so'ng, qurilma Android-da STOMP protokoli yoki iOS-da APNs kanali orqali Firebase serverlari bilan doimiy ulanish o'rnatadi. Server qismi tokenga bildirishnoma yuborganda, FCM qurilmani token orqali topadi va yukni uzatadi.
Registration Token FCM tomonidan quyidagi hollarda qayta yaratilishi mumkin. Ilovani zaxira nusxadan yangi qurilmada tiklashda. Ilovani o'chirish va qayta o'rnatishda. Tizim sozlamalari orqali ilova ma'lumotlarini tozalashda. Qurilmada boshqa Google hisobiga kirishda. Firebase o'zgarishlarni kuzatish üçün har doim onNewToken callbackini qayta ishlashni tavsiya qiladi.
Android-da Registration Token Firebase Messaging SDK orqali olinadi. Jarayon turli SDK versiyalari üçün farq qiladi — yangi versiyalarda eskirgan FirebaseInstanceId o'rniga FirebaseInstallations API ishlatiladi.
Firebase SDK 21.0.0 versiyasidan boshlab, getToken() metodi FirebaseMessaging orqali chaqiriladi. Bu yondashuv tokenning hayot aylanishini avtomatik boshqaradi va uning yangilanishlariga obuna bo'ladi.
class MyFirebaseMessagingService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendRegistrationToServer(token)
}
private fun sendRegistrationToServer(token: String) {
// Tokenni server qismiga yuborish
Log.d("FCM", "New token: $token")
}
init {
FirebaseMessaging.getInstance()
.getToken()
.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "FCM tokenini olish muvaffaqiyatsiz tugadi")
return@addOnCompleteListener
}
val token = task.result
sendRegistrationToServer(token)
}
}
}
Ba'zi stsenariylarda token xizmatda emas, balki to'g'ridan-to'g'ri Activity yoki ViewModel da kerak bo'ladi. Buning üçün getToken() ilova hayot aylanishining mos joyida chaqirilishi mumkin. Bu metodni asinxronlikni boshqarmasdan asosiy oqimdan chaqirmaslik muhim.
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")
}
}
}
}
Firebase SDK ning eski versiyalarida (20.x dan oldin) token FirebaseInstanceId.getInstance().getToken() orqali olingan. Bu metod deprecated deb belgilangan va yangi loyihalarda foydalanish tavsiya etilmaydi. Legacy kodni qo'llab-quvvatlovchi dasturchilar FirebaseInstallations API ga o'tishlari kerak.
iOS-da Registration Token olish jarayoni arxitektur jihatidan farq qiladi — FCM Apple Push Notification service (APNs) orqali ishlaydi. Firebase SDK APNs dan noyob device token oladi, uni FCM formatiga o'zgartiradi va ilovaga uzatadi.
FCM ning iOS-da ishlashi üçün Firebase konsolida APNs sertifikati yoki kalit sozlanishi kerak. Ilova UNUserNotificationCenter orqali bildirishnomalarga ruxsat so'rashi kerak. APNs tokeni olingandan so'ng, Firebase SDK avtomatik ravishda Registration Tokenni yaratadi.
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-da Registration Token Android tokeniga nisbatan kichikroq o'lchamga ega, chunki u APNs device token ga asoslanadi. Firebase SDK APNs tokeni o'zgarganda FCM tokenini avtomatik yangilaydi, bu qurilmani zaxira nusxadan tiklash yoki ilovani qayta o'rnatishda sodir bo'ladi.
Hayot aylanishini boshqarish Registration Token push-bildirishnomalarini barqaror yetkazib berish üçün juda muhim vazifadir. Agar server qismi eskirgan token saqlasa, bildirishnomalar yetkazilmaydi va Firebase UNREGISTERED xatosini qaytaradi.
Firebase SDK token o'zgarishlarini kuzatish üçün ikkita mexanizmni taqdim etadi. Android-da FirebaseMessagingService da callback onNewToken ishlatiladi. iOS-da — delegat messaging:didReceiveRegistrationToken. Ikkalasi ham har bir token yangilanishida chaqiriladi.
// Tokenni SharedPreferences-da saqlash va serverga yuborish
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)
}
}
Server qismi Registration Tokenni foydalanuvchi identifikatori bilan bog'lab saqlashi kerak. Token yangilanganda, mijoz serverga yangi token yuboradi va server eskisini almashtiradi. Tokenlar tarixini saqlash tavsiya etiladi: agar bildirishnoma yangi tokenga yetkazilmagan bo'lsa, eskisini sinab ko'rish mumkin.
Firebase bir nechta hollarda token olish xatosini qaytarishi mumkin. Qurilmada Google Play Services yo'qligi — token olinmaydi. FCM so'rovlari limitidan oshib ketish — qayta urinishlarda eksponensial kechikish qo'llanilishi kerak. Tokenning amal qilish muddati tugashi — SDK avtomatik ravishda yangisini so'raydi.
| Vaziyat | Natija | Dasturchining harakati |
|---|---|---|
| Ilovani o'chirish | Token bekor qilinadi | Tokenni bazadan o'chiring |
| Zaxira nusxadan tiklash | Yangi token | Bazada yangilang |
| Google Play Services ni tiklash | Token qayta yaratildi | onNewToken ni qayta ishlang |
| Token muddati tugashi | Avtomatik yangilanish | Yangilanishlarga obuna bo'ling |
Ko'p so'raladigan savollar
Qurilmada Google Play Services mavjudligini, google-services.json faylining to'g'riligini va Firebase SDK versiyasini tekshiring. Ilovaning internetga kirish ruxsati borligiga ishonch hosil qiling.
Token ilovani o'chirish va qayta o'rnatish, ma'lumotlarni tozalash, zaxira nusxadan tiklash yoki boshqa Google hisobiga kirishda o'zgarishi mumkin. Qattiq vaqt oralig'i yo'q.
Ha, qurilmadagi har bir ilova o'z FCM tokenini oladi. Agar qurilmada Firebase bilan uchta ilova o'rnatilgan bo'lsa, har biri o'zining noyob Registration Tokeniga ega bo'ladi.
Firebase konsoli yoki FCM HTTP API orqali sinov bildirishnomasini yuboring. Agar token amalda bo'lmasa, API UNREGISTERED yoki NOT_FOUND xatosini qaytaradi.
Registration Token maxfiy kalit emas, lekin uning sizib chiqishi foydalanuvchining qurilmasiga bildirishnomalar yuborish imkonini beradi. Tokenlarni himoyalangan ma'lumotlar bazasida saqlang va uzatish üçün HTTPS dan foydalaning.
Xulosalar
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.