Firebase Cloud Messaging (FCM) — bu Google tomonidan mobil va veb ilovalar uchun mo'ljallangan push-xabarlar va xabarlarni yetkazib berish uchun platformalararo xizmatdir. FCM doimiy tarmoq aloqasini saqlash zaruratisiz server va mijoz qurilmalari o'rtasida ishonchli ma'lumot uzatilishini ta'minlaydi. Firebase Documentation, 2026 ma'lumotlariga ko'ra, FCM infratuzilmasi orqali har kuni butun dunyo bo'ylab 300 milliarddan ortiq xabar o'tadi. Xizmat avtomatik ko'rsatiladigan bildirishnomalarni ham, fonda yashirin ma'lumot uzatish uchun data xabarlarini ham qo'llab-quvvatlaydi.
Asosiy nuqtalar
Firebase Cloud Messaging — ilova serveri va mijoz qurilmalari o'rtasida push-xabarlar va data xabarlarini uzatishni ta'minlaydigan Google bulut xizmati. Xizmat eskirgan Google Cloud Messaging (GCM) o'rnini egalladi va Firebase ekotizimida push yetkazib berish uchun standart yechimga aylandi. FCM Android, iOS, Web va Unity-ni qo'llab-quvvatlaydi, maqsadli platformadan qat'iy nazar yagona jo'natish interfeysini ta'minlaydi.
Xizmat har biri o'z vazifasini hal qiladigan bir nechta xabarlarni yetkazib berish mexanizmlarini taqdim etadi. Notification xabarlari qabul qilinganda tizim tomonidan avtomatik ko'rsatiladi — dasturchi bildirishnomani ko'rsatish uchun kod yozishi shart emas. Data xabarlari kalit-qiymat juftliklari shaklida ixtiyoriy payload uzatadi va ilova ichida qayta ishlanadi. Birlashtirilgan xabarlar maksimal moslashuvchanlik uchun bir vaqtning o'zida ko'rinadigan va yashirin qismlarni o'z ichiga oladi.
O'z push serverini yaratish har bir qurilma bilan doimiy TCP aloqasini saqlashni talab qiladi, bu esa samarasiz va xavflidir. FCM yagona Google infratuzilmasidan foydalanadi, bir vaqtning o'zida milliardlab qurilmalar bilan aloqani saqlaydi. Xizmat avtomatik ravishda qayta yetkazib berish urinishlarini, xabar navbatlarini va yuk muvozanatini boshqaradi, dasturchini bu vazifalarni o'zi hal qilish zaruratidan ozod qiladi.
FCM arxitekturasi uchta asosiy komponentdan iborat: provayder serveri (sizning backend), Firebase Cloud Messaging serveri va qurilmadagi mijoz ilovasi. Server xabar jo'natganda, u avval FCM infratuzilmasiga tushadi, u uni maqsadli qurilmaga yo'naltiradi. Qurilma oflayn bo'lsa, FCM xabarni navbatda saqlaydi va aloqa tiklanganda yetkazib beradi.
Birinchi ishga tushirishda ilova FCM xizmatida qurilmani ro'yxatdan o'tkazadigan va noyob Registration Token oladigan Firebase SDK-ni chaqiradi. Bu token taxminan 150 belgidan iborat qator bo'lib, ma'lum bir qurilmadagi ilovaning aniq nusxasini identifikatsiya qiladi. Token ilova qayta o'rnatilganda, ma'lumotlar tozalanganda yoki backup-dan tiklanganda o'zgarishi mumkin — dasturchi onNewToken delegati orqali token yangilanishini qayta ishlashi kerak.
Server FCM API orqali so'rov jo'natganda, xabar bir necha bosqichdan o'tadi. Qabul qilish va validatsiya — FCM so'rovning to'g'riligini va maqsadli qurilma mavjudligini tekshiradi. Navbat — qurilma mavjud bo'lmasa, xabar saqlash navbatiga tushadi. Yo'naltirish — FCM optimal yetkazib berish kanalini (Wi-Fi yoki mobil ma'lumot) aniqlaydi. Yetkazib berish — tizim xabarni maqsadli ilovaga uzatadi. Muvaffaqiyatli yetkazib berilgandan so'ng, FCM serverga xabar identifikatorini qaytaradi.
Firebase Cloud Messaging har biri mijoz tomonida o'ziga xos qayta ishlash xususiyatlariga ega bo'lgan uch turdagi xabarni qo'llab-quvvatlaydi. Notification xabarlari Androidda Google Play Services va iOSda APNs tizim xizmati tomonidan qayta ishlanadi va avtomatik ravishda push bannerlari shaklida ko'rsatiladi. Data xabarlari to'g'ridan-to'g'ri ilovaga uzatiladi va Androidda onMessageReceived, iOSda esa application(_:didReceiveRemoteNotification:) callback-i orqali qayta ishlanadi.
Notification xabari oldindan belgilangan maydonlarni o'z ichiga oladi: title, body, rasm URL va bildirishnoma ovozi. Tizim avtomatik ravishda bildirishnomani tizim tepsisida yaratadi va ko'rsatadi, hatto ilova fonda bo'lsa yoki o'chirilgan bo'lsa ham. Foydalanuvchi sarlavha va matn bilan standart bannerni ko'radi, bosganda esa ilova payloadda uzatilgan ma'lumotlar bilan ochiladi. Ilova faol bo'lsa, notification xabari ushlanishi va kodda qayta ishlanishi mumkin.
Data xabari — oldindan belgilangan maydonlarsiz maxsus kalit-qiymat juftliklari to'plamidir. Payload tizim tomonidan avtomatik qayta ishlanmaydi — ilova xom ma'lumotlarni oladi va ularni istalgancha talqin qilishi mumkin. Data xabarlari fonda ma'lumot sinxronizatsiyasi, lokal keshni yangilash, sinxronizatsiya triggeri yoki bildirishnomani ko'rsatmasdan buyruqlarni uzatish uchun ishlatiladi. Androidda data xabari har doim yetkazib beriladi, hatto ilova o'chirilgan yoki fonda bo'lsa ham.
FCM bir vaqtning o'zida notification qismi (ko'rsatish uchun) va data qismi (qayta ishlash uchun) bo'lgan xabarni jo'natish imkonini beradi. Birlashtirilgan payload notificationning oldindan belgilangan maydonlarini ham, dataning ixtiyoriy kalitlarini ham o'z ichiga oladi. Tizim notification qismidan bildirishnomani ko'rsatadi, data qismi esa ochilish vaqtida ilovaning intent extras-iga uzatiladi. Bu foydalanuvchiga bildirishnomani ko'rsatish va bir vaqtning o'zida ma'lum ekranga o'tish uchun kontekstni uzatish kerak bo'lgan stsenariylar uchun qulaydir.
| Tur | Avto-ko'rsatish | Fondada qayta ishlash | Misol |
|---|---|---|---|
| Notification | Ha, tizim tomonidan | Avtomatik, kodsiz | Tabriklovchi push-xabar |
| Data | Yo'q | Ilova callback-i orqali | Fondada ma'lumot sinxronizatsiyasi |
| Birlashtirilgan | Ha, notification qismi | Ochilishda data qismi | Bildirishnoma + buyurtma havolasi |
Androidda FCM integratsiyasi ilova darajasida build.gradle fayli orqali Firebase SDK-ni ulash bilan boshlanadi. Bog'liqliklar va google-services.json fayli qo'shilgandan so'ng, ilova avtomatik ravishda FirebaseMessagingService callback-i orqali uzatiladigan Registration Token oladi. Bildirishnomalarni qabul qilish uchun FirebaseMessagingService-dan meros oladigan xizmat yaratilishi va AndroidManifest.xml da ro'yxatdan o'tkazilishi kerak.
Firebase SDK ulangandan so'ng qo'shimcha kodsiz avtomatik ravishda qurilma tokenini yaratadi. Token FirebaseMessaging.getInstance().token orqali mavjud bo'lib, u Task
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Yangi xabar"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
FCM xabarlarini qabul qilish uchun xizmat AndroidManifest.xml da tegishli intent-filter bilan ro'yxatdan o'tkazilishi kerak. INTERNET ruxsati va action ko'rsatilgan service tegini qo'shish. Xizmat ro'yxatdan o'tkazilmasa, xabarlar fonda ilovaga yetkazilmaydi. Android 13+ da bildirishnomalarni ko'rsatish uchun POST_NOTIFICATIONS runtime ruxsati talab qilinadi.
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
"android.permission.POST_NOTIFICATIONS" />
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name=
"com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
iOSda FCM integratsiyasi Apple Push Notification Service (APNs) tomonida ham, Firebase Console da ham sozlashni talab qiladi. Androiddan farqli o'laroq, FCM iOSda APNs dan transport qatlami sifatida foydalanadi. Ilova UIApplication.shared.registerForRemoteNotifications orqali push-xabarlarni olish uchun ro'yxatdan o'tadi, Firebase SDK esa olingan device tokenni ushlaydi va uni FCM Registration Token bilan bog'laydi.
iOSda FCM ishlashi uchun Firebase Console da APNs kaliti yoki sertifikati yuklanishi kerak. APNs kaliti — sertifikatsiz zamonaviy autentifikatsiya usuli (Apple tomonidan tavsiya etiladi). Kalit Apple Developer Portal da Keys bo'limida yaratiladi va Firebase Console da Cloud Messaging sozlamalarida yuklanadi. APNs sozlangandan so'ng, ilova UNUserNotificationCenter orqali bildirishnomalarga ruxsat so'raydi va APNs orqali ro'yxatdan o'tadi.
import Firebase
import UserNotifications
class AppDelegate: NSObject, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge])
application.registerForRemoteNotifications()
return true
}
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
Messaging.messaging()
.apnsToken = deviceToken
}
}
Qabul qilingan bildirishnomalarni qayta ishlash uchun UNUserNotificationCenter delegati amalga oshiriladi. willPresent metodi bildirishnoma faol ilova vaqtida qabul qilinganda chaqiriladi — bu erda maxsus in-app bildirishnoma ko'rsatilishi yoki tizim banneri e'tiborsiz qoldirilishi mumkin. didReceive metodi foydalanuvchi bildirishnomani bosganda chaqiriladi — bu erda tegishli ekranga o'tish amalga oshiriladi. Data xabarlari uchun fonda FCM xabari qabul qilinganda payloadni oladigan MessagingDelegate delegati ishlatiladi.
Server jo'natmasi FCM xabarlari HTTP v1 API Firebase Cloud Messaging yoki eskirgan Firebase Cloud Messaging API orqali amalga oshiriladi. HTTP v1 API tavsiya etilgan usul bo'lib, Service Account orqali OAuth 2.0 autentifikatsiyasidan foydalanadi va yetkazib berish analitikasi va A/B bildirishnoma testlarini o'z ichiga olgan barcha zamonaviy FCM imkoniyatlarini qo'llab-quvvatlaydi. So'rov POST metodi bilan https://fcm.googleapis.com/v1/projects/{project_id}/messages:send endpoint-ga jo'natiladi.
So'rov tanasi xabar haqida ma'lumotga ega JSON obyektini o'z ichiga oladi: target (token, topik yoki shart), notification (ko'rsatish uchun) va data (maxsus payload). Autentifikatsiya Service Account JSON kaliti orqali amalga oshiriladi, u serverning atrof-muhit o'zgaruvchilariga yuklanadi. Kirish tokeni google-auth-library kutubxonasi orqali yaratiladi. Google autentifikatsiya va qayta urinishlarni avtomatik boshqarish uchun Firebase Admin SDK dan foydalanishni tavsiya qiladi.
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
const message = {
token: "device_registration_token",
notification: { title: "20% chegirma", body: "Barcha xizmatlarga bugun" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Muvaffaqiyatli jo'natildi:", response)
})
.catch(error => {
console.log("Jo'natish xatosi:", error)
})
Foydalanuvchilar guruhiga bildirishnomalar jo'natish uchun FCM topiklarga obuna bo'lishni qo'llab-quvvatlaydi. Topik — mijoz ilovasi FirebaseMessaging.getInstance().subscribeToTopic() orqali obuna bo'ladigan nomlangan kanaldir. Server topikga xabar jo'natishi mumkin va u barcha obuna bo'lgan qurilmalarga yetkaziladi. Topiklar yangiliklar byulletenlari, aksiya bildirishnomalari va hodisa pushlari uchun mos keladi. Aniqroq segmentatsiya uchun mantiqiy operatorlar bilan bir nechta topik asosida shartlar (conditions) ishlatiladi.
Tez-tez beriladigan savollar
FCM Androidda o'z Google infratuzilmasi orqali ishlaydi, iOSda esa APNs dan transport protokoli sifatida foydalanadi. FCM ikkala platforma uchun yagona API, avtomatik oflayn xabar saqlash va yetkazib berish analitikasini ta'minlaydi, bu esa sof APNsda mavjud emas.
Ha, Firebase Console da Cloud Messaging bo'limida tanlangan qurilmalarga, topiklarga yoki auditoriya segmentlariga qo'lda bildirishnomalar jo'natish mumkin. Funksiya sinash va bir martalik jo'natmalar uchun mos keladi, lekin production ilovalari uchun server integratsiyasini almashtirmaydi.
onNewToken (Androidda FirebaseMessagingService) yoki MessagingDelegate (iOSda) orqali token yangilanishlariga obuna bo'ling. Token o'zgarganda yangi tokeni serverga jo'natib, eskisini o'chiring. Server ma'lumotlar bazasini yangilashi va eskirgan tokenga jo'natish urinishlarini to'xtatishi kerak.
FCM xabarni 28 kungacha navbatda saqlaydi va aloqa tiklanganda yetkazib beradi. Notification xabarlari uchun har bir kollaps guruhi uchun faqat oxirgi xabar kollaps qilinadi. Data xabarlari alohida saqlanadi va kollaps qilinmasdan jo'natish tartibida yetkazib beriladi.
FCM butunlay bepul, xabarlar sonida cheklov yo'q. FCM dan foydalanish na Spark rejasida, na Blaze rejasida tariflanmaydi. Cheklovlar faqat payload hajmiga tegishli: notification xabarlari uchun 4 KB gacha va data xabarlari uchun 2 KB gacha.
Xulosa
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.