Firebase Cloud Messaging (FCM) — Google tərəfindən mobil və veb tətbiqlər üçün nəzərdə tutulmuş push bildirişləri və mesajların çatdırılması üçün platformalararası xidmətdir. FCM daimi şəbəkə əlaqəsi saxlamağa ehtiyac olmadan server və müştəri cihazları arasında etibarlı məlumat ötürülməsini təmin edir. Firebase Documentation, 2026 məlumatına görə, FCM infrastrukturu vasitəsilə gündəlik 300 milyarddan çox mesaj ötürülür. Xidmət həm avtomatik göstərilən bildirişləri, həm də fonda gizli məlumat ötürülməsi üçün data mesajlarını dəstəkləyir.
Əsas məqamlar
Firebase Cloud Messaging — tətbiq serveri ilə müştəri cihazları arasında push bildirişləri və data mesajlarının ötürülməsini təmin edən Google-un bulud xidmətidir. Xidmət köhnəlmiş Google Cloud Messaging (GCM) əvəz etmiş və Firebase ekosistemində push çatdırılması üçün standart həll yolu olmuşdur. FCM Android, iOS, Web və Unity-ni dəstəkləyir, hədəf platformadan asılı olmayaraq vahid göndərmə interfeysi təmin edir.
Xidmət hər biri öz vəzifəsini həll edən bir neçə mesaj çatdırılma mexanizmi təqdim edir. Notification mesajları qəbul edildikdə sistem tərəfindən avtomatik göstərilir — tərtibatçı bildirişi göstərmək üçün kod yazmalı deyil. Data mesajları açar-dəyər cütləri şəklində ixtiyari payload ötürür və tətbiq daxilində emal olunur. Kombinə edilmiş mesajlar maksimum çeviklik üçün eyni anda həm görünən, həm də gizli hissələri ehtiva edir.
Öz push serverinizi hazırlamaq hər bir cihazla daimi TCP əlaqəsi tələb edir ki, bu da səmərəsiz və təhlükəsiz deyil. FCM vahid Google infrastrukturundan istifadə edir, eyni anda milyardlarla cihazla əlaqə saxlayır. Xidmət avtomatik olaraq təkrar çatdırılma cəhdlərini, mesaj növbələrini və yük balanslamasını idarə edir, tərtibatçını bu vəzifələri öz başına həll etmək məcburiyyətindən azad edir.
FCM arxitekturası üç əsas komponentdən ibarətdir: provayder serveri (sizin backend), Firebase Cloud Messaging serveri və cihazdakı müştəri tətbiqi. Server mesaj göndərdikdə, o əvvəlcə FCM infrastrukturuna daxil olur, o da onu hədəf cihaza yönləndirir. Cihaz oflayndırsa, FCM mesajı növbədə saxlayır və əlaqə bərpa edildikdə çatdırır.
İlk işə salındıqda tətbiq FCM xidmətində cihazı qeydiyyatdan keçirən və unikal Registration Token alan Firebase SDK-nı çağırır. Bu token təxminən 150 simvol uzunluğunda sətirdir və müəyyən bir cihazdakı tətbiqin konkret nümunəsini identifikasiya edir. Token tətbiq yenidən quraşdırıldıqda, məlumatlar təmizləndikdə və ya backup-dan bərpa edildikdə dəyişə bilər — tərtibatçı onNewToken delegatı vasitəsilə token yenilənməsini emal etməlidir.
Server FCM API vasitəsilə sorğu göndərdikdə, mesaj bir neçə mərhələdən keçir. Qəbul və validasiya — FCM sorğunun düzgünlüyünü və hədəf cihazın mövcudluğunu yoxlayır. Növbə — cihaz əlçatmazdırsa, mesaj saxlama növbəsinə daxil olur. Yönləndirmə — FCM optimal çatdırılma kanalını (Wi-Fi və ya mobil məlumat) müəyyən edir. Çatdırılma — sistem mesajı hədəf tətbiqə ötürür. Uğurlu çatdırılmadan sonra FCM serverə mesaj identifikatorunu qaytarır.
Firebase Cloud Messaging hər biri müştəri tərəfində öz emal xüsusiyyətlərinə malik üç növ mesajı dəstəkləyir. Notification mesajları Android-də Google Play Services və iOS-da APNs sistem xidməti tərəfindən emal edilir və avtomatik olaraq push bannerləri şəklində göstərilir. Data mesajları birbaşa tətbiqə ötürülür və Android-də onMessageReceived, iOS-da isə application(_:didReceiveRemoteNotification:) callback-i vasitəsilə emal olunur.
Notification mesajı əvvəlcədən müəyyən edilmiş sahələri ehtiva edir: title, body, şəkil URL-i və bildiriş səsi. Sistem avtomatik olaraq bildirişi sistem tepsisində yaradır və göstərir, hətta tətbiq fonda olsa və ya dayandırılsa belə. İstifadəçi başlıq və mətn ilə standart banner görür, kliklədikdə isə tətbiq payload-da ötürülən məlumatlarla açılır. Tətbiq aktiv olduqda, notification mesajı tutula və koddda emal edilə bilər.
Data mesajı — əvvəlcədən müəyyən edilmiş sahələr olmayan fərdi açar-dəyər cütləri dəstidir. Payload sistem tərəfindən avtomatik emal edilmir — tətbiq xam məlumatları alır və onları istənilən şəkildə interpretasiya edə bilər. Data mesajları fonda məlumat sinxronizasiyası, lokal keşin yenilənməsi, sinxronizasiya triggeri və ya bildiriş göstərmədən əmrlərin ötürülməsi üçün istifadə olunur. Android-də data mesajı həmişə çatdırılır, hətta tətbiq dayandırılsa və ya fonda olsa belə.
FCM eyni anda həm notification hissəsi (göstərmək üçün), həm də data hissəsi (emal üçün) olan mesaj göndərməyə imkan verir. Kombinə edilmiş payload həm notification-un əvvəlcədən müəyyən edilmiş sahələrini, həm də data-nın ixtiyari açarlarını ehtiva edir. Sistem notification hissəsindən bildiriş göstərir, data hissəsi isə açılış zamanı tətbiqin intent extras-ına ötürülür. Bu, istifadəçiyə bildiriş göstərmək və eyni anda konkret ekrana keçid üçün kontekst ötürmək lazım olan ssenarilər üçün əlverişlidir.
| Növ | Avto-göstərmə | Fonda emal | Nümunə |
|---|---|---|---|
| Notification | Bəli, sistem tərəfindən | Avtomatik, kodsuz | Salamlama push bildirişi |
| Data | Xeyr | Tətbiq callback-i ilə | Fonda məlumat sinxronizasiyası |
| Kombinə edilmiş | Bəli, notification hissəsi | Açılışda data hissəsi | Bildiriş + sifariş linki |
Android-də FCM inteqrasiyası tətbiq səviyyəsində build.gradle faylı vasitəsilə Firebase SDK-nın qoşulması ilə başlayır. Asılılıqlar və google-services.json faylı əlavə edildikdən sonra tətbiq avtomatik olaraq FirebaseMessagingService callback-i ilə ötürülən Registration Token alır. Bildirişləri qəbul etmək üçün FirebaseMessagingService-dən miras alan xidmət yaradılmalı və AndroidManifest.xml-də qeydiyyatdan keçirilməlidir.
Firebase SDK qoşulduqdan sonra əlavə kod olmadan avtomatik olaraq cihaz tokeni yaradır. Token FirebaseMessaging.getInstance().token vasitəsilə əlçatandır, o Task
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Yeni mesaj"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
FCM mesajlarını qəbul etmək üçün xidmət AndroidManifest.xml-də müvafiq intent-filter ilə qeydiyyatdan keçirilməlidir. INTERNET icazəsi və action göstərilməklə service teqinin əlavə edilməsi. Xidmət qeydiyyatdan keçirilməzsə, mesajlar fon rejimində tətbiqə çatdırılmayacaq. Android 13+-də bildirişləri göstərmək üçün runtime icazəsi POST_NOTIFICATIONS tələb olunur.
<!-- 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>
iOS-da FCM inteqrasiyası həm Apple Push Notification Service (APNs) tərəfində, həm də Firebase Console-da konfiqurasiya tələb edir. Android-dən fərqli olaraq, FCM iOS-da APNs-dən nəqliyyat qatı kimi istifadə edir. Tətbiq UIApplication.shared.registerForRemoteNotifications vasitəsilə push bildirişləri almaq üçün qeydiyyatdan keçir, Firebase SDK isə alınan device token-i ələ keçirir və onu FCM Registration Token ilə əlaqələndirir.
iOS-da FCM-nin işləməsi üçün Firebase Console-da APNs açarı və ya sertifikat yüklənməlidir. APNs açarı — sertifikatsız müasir autentifikasiya üsuludur (Apple tərəfindən tövsiyə olunur). Açar Apple Developer Portal-da Keys bölməsində yaradılır və Firebase Console-da Cloud Messaging parametrlərində yüklənir. APNs konfiqurasiyasından sonra tətbiq UNUserNotificationCenter vasitəsilə bildirişlərə icazə tələb edir və APNs vasitəsilə qeydiyyatdan keçir.
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
}
}
Alınan bildirişləri emal etmək üçün UNUserNotificationCenter delegatı tətbiq edilir. willPresent metodu bildiriş aktiv tətbiq zamanı qəbul edildikdə çağırılır — burada fərdi in-app notifikasiya göstərilə bilər və ya sistem banneri buraxıla bilər. didReceive metodu istifadəçi bildirişi kliklədikdə çağırılır — burada müvafiq ekrana keçid edilir. Data mesajları üçün fonda FCM mesajı qəbul edildikdə payload alan MessagingDelegate delegatı istifadə olunur.
Server göndərməsi FCM mesajları HTTP v1 API Firebase Cloud Messaging və ya köhnəlmiş Firebase Cloud Messaging API vasitəsilə həyata keçirilir. HTTP v1 API tövsiyə olunan üsuldur, Service Account vasitəsilə OAuth 2.0 autentifikasiyasından istifadə edir və çatdırılma analitikası və A/B bildiriş testləri daxil olmaqla bütün müasir FCM imkanlarını dəstəkləyir. Sorğu POST metodu ilə https://fcm.googleapis.com/v1/projects/{project_id}/messages:send endpoint-ə göndərilir.
Sorğunun gövdəsi mesaj haqqında məlumatı olan JSON obyekti ehtiva edir: target (token, topic və ya şərt), notification (göstərmək üçün) və data (fərdi payload). Autentifikasiya Service Account JSON açarı vasitəsilə aparılır, o serverin ətraf dəyişənlərinə yüklənir. Giriş tokeni google-auth-library kitabxanası vasitəsilə yaradılır. Google autentifikasiya və təkrar cəhdlərin avtomatik idarə edilməsi üçün Firebase Admin SDK-dan istifadə etməyi tövsiyə edir.
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% endirim", body: "Bütün xidmətlərə bu gün" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Uğurla göndərildi:", response)
})
.catch(error => {
console.log("Göndərmə xətası:", error)
})
İstifadəçi qrupuna bildiriş göndərmək üçün FCM topic abunəliyini dəstəkləyir. Topic — müştəri tətbiqinin FirebaseMessaging.getInstance().subscribeToTopic() vasitəsilə abunə olduğu adlandırılmış kanaldır. Server topic-ə mesaj göndərə bilər və o, bütün abunə olunmuş cihazlara çatdırılacaq. Topiclər xəbər bülletenləri, promosyon bildirişləri və event push üçün uyğundur. Daha dəqiq seqmentasiya üçün məntiqi operatorlarla bir neçə topic əsasında şərtlər (conditions) istifadə olunur.
Tez-tez verilən suallar
FCM Android-də öz Google infrastrukturu vasitəsilə işləyir, iOS-da isə APNs-dən nəqliyyat protokolu kimi istifadə edir. FCM hər iki platforma üçün vahid API, avtomatik oflayn mesaj saxlama və çatdırılma analitikası təmin edir ki, bunlar təmiz APNs-də yoxdur.
Bəli, Firebase Console-da Cloud Messaging bölməsində seçilmiş cihazlara, topiclərə və ya auditoriya seqmentlərinə əl ilə bildiriş göndərmək olar. Funksiya sınaq və birdəfəlik göndərişlər üçün uyğundur, lakin production tətbiqləri üçün server inteqrasiyasını əvəz etmir.
onNewToken (Android-də FirebaseMessagingService) və ya MessagingDelegate (iOS-da) vasitəsilə token yenilənmələrinə abunə olun. Token dəyişdikdə yeni tokeni serverə göndərin və köhnəsini silin. Server məlumat bazasını yeniləməli və köhnəlmiş tokenə göndərmə cəhdlərini dayandırmalıdır.
FCM mesajı 28 günə qədər növbədə saxlayır və əlaqə bərpa edildikdə çatdırır. Notification mesajları üçün hər kollaps qrupu üçün yalnız son mesaj kollaps edilir. Data mesajları ayrıca saxlanılır və kollaps olmadan göndərilmə sırası ilə çatdırılır.
FCM tamamilə pulsuzdur, mesaj sayında məhdudiyyət yoxdur. FCM-dən istifadə nə Spark planı, nə də Blaze planı çərçivəsində tarifləndirilmir. Məhdudiyyətlər yalnız payload ölçüsünə aiddir: notification mesajları üçün 4 KB-a qədər və data mesajları üçün 2 KB-a qədər.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun