FCM (Firebase Cloud Messaging) Google tərəfindən push bildirişləri çatdırmaq və serverlə mobil tətbiqlər arasında məlumat ötürmək üçün platformalararası xidmətdir. O, vahid API vasitəsilə Android, iOS və veb platformalarını dəstəkləyir. Firebase Documentation məlumatına görə, FCM bütün dünyada gündə 1 milyarddan çox mesaj emal edir.
Əsas məqamlar
Firebase Cloud Messaging (FCM) Google-ın bulud xidmətidir ki, mobil cihazlara push bildirişləri və məlumat mesajlarının etibarlı çatdırılmasını təmin edir. Əvvəllər Google Cloud Messaging (GCM) kimi tanınan FCM, Firebase ekosistemində platformalararası bildirişlər üçün əsas vasitəyə çevrilib.
FCM platformadan asılı olaraq avtomatik olaraq optimal çatdırılma kanalını seçir: Android-də öz FCM əlaqəsindən, iOS-da isə APNS-dən (FCM şlüzü vasitəsilə) istifadə edir. Tərtibatçı iki fərqli inteqrasiya həyata keçirməli deyil — FCM marşrutlaşdırmanı öz üzərinə götürür.
Xidmət mesaj göndərmək üçün vahid REST API və Admin SDK təqdim edir. Bu, alıcının konkret platformasına bağlanmadan server hissəsindən bildirişlər göndərməyə imkan verir.
FCM bir neçə çatdırılma rejimini dəstəkləyir: konkret cihaza tək mesaj, mövzu üzrə (topic) qrup göndərmə və şərtlər üzrə (condition) seqment göndərmə. Həmçinin göndərmənin planlaşdırılması və bildiriş məzmununun A/B testi mövcuddur.
FCM arxitekturası üç komponentə əsaslanır: müştəri tətbiqi, Firebase Connection Server və tətbiq serveri (app server). Müştəri işə salındıqda FCM-də qeydiyyatdan keçir və unikal qeydiyyat tokeni alır — bu tətbiq üçün cihazı identifikasiya edən sətir.
Tətbiq serveri FCM REST API-nə sorğu göndərir, alıcının tokenini və ya mövzunu göstərir. Firebase Connection Server daimi XMPP əlaqəsi və ya HTTP sorğusundan istifadə edərək mesajı çatdırır. Cihaz oflayndırsa — mesaj növbəyə qoyulur və əlaqə bərpa edildikdə çatdırılır.
FCM prioritet növbələr və qəbul təsdiqi mexanizmi vasitəsilə çatdırılmaya zəmanət verir. Android-də mesaj növbədə 28 günə qədər, iOS-da isə 4 həftəyə qədər (APNS vasitəsilə) saxlanılır. Müddət bitdikdə mesaj bildirişsiz silinir.
Qeydiyyat tokeni bir neçə halda dəyişə bilər: tətbiq məlumatlarının bərpası zamanı, yeni versiyaya yenilənmə zamanı və ya keşin təmizlənməsi zamanı. Tətbiq tokenin yenilənməsini və serverlə sinxronizasiyanı idarə etmək üçün FirebaseMessagingService.onNewToken funksiyasını tətbiq etməlidir.
FCM iki növ yük dəstəkləyir: notification və data. Hər növ mesajın alıcı cihazda necə və nə vaxt emal ediləcəyini müəyyən edir.
| Parametr | Notification | Data |
|---|---|---|
| Avtomatik göstərmə | Bəli, tətbiq fondadırsa | Xeyr, yalnız tətbiqdə |
| Emal | Sistem — fonda; tətbiq — ön planda | Həmişə tətbiqdə (onMessageReceived) |
| Maksimum ölçü | 4 KB | 4 KB |
| Xüsusi açarlar | Əvvəlcədən təyin edilmiş sahələrlə məhdud | İstənilən açar-dəyər cütləri |
| CollapseKey tələb edir | İstəyə bağlı | Qruplaşdırma üçün istəyə bağlı |
Praktikada, tətbiq bildirişi onMessageReceived-də tam emal etməlidirsə, data-mesajlardan istifadə etmək tövsiyyə olunur. Notification-mesajlar sistem göstərməsinin kifayət etdiyi sadə ssenarilər üçün uyğundur.
FCM və APNS iki əsas push çatdırılma xidmətidir. FCM platformalararası şlüz kimi işləyir, APNS isə yalnız Apple ekosistemi üçündür. Onların əsas fərqləri arxitekturada, sertifikat tələblərində və marşrutlaşdırma mexanizmlərindədir.
FCM və birbaşa APNS arasında seçim layihənin arxitekturasından asılıdır. Platformalararası tətbiqlər üçün FCM optimal seçimdir. Yalnız iOS layihələri üçün HTTP/2 API vasitəsilə birbaşa APNS ilə işləmək mümkündür.
FCM layihə eyni anda Android və iOS istifadə etdikdə, həmçinin Firebase analitikası, bildirişlərin A/B testi və ya server məntiqi olmadan mövzular lazım olduqda əsaslandırılır. Birbaşa APNS minimal asılılıqları və çatdırılma gecikməsi üçün ciddi tələbləri olan yalnız iOS tətbiqləri üçün üstünlük təşkil edir.
FCM-ni Android tətbiqinə qoşmaq üçün Firebase SDK əlavə etmək və layihənin kökündə google-services.json-u konfiqurasiya etmək lazımdır. Token qeydiyyatından sonra tətbiq FirebaseMessagingService vasitəsilə mesajları qəbul etməyə hazırdır.
// build.gradle (Modul)
dependencies {
implementation("com.google.firebase:firebase-messaging:24.1.0")
}
// AndroidManifest.xml
<service android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
message.notification?.let {
showNotification(it.title, it.body)
}
}
}
Konfiqurasiyadan sonra tətbiq ilk işə salındıqda avtomatik olaraq FCM tokeni alır. Token bu cihaza bildirişlər göndərmək üçün tətbiq serverinə göndərilməlidir.
Android 8+-da avtomatik göstərmə ilə FCM bildirişi göndərməzdən əvvəl NotificationChannel yaradılmalıdır. FCM notification-mesajları standart ID-li kanaldan istifadə edir, lakin ilk mesaj qəbul edildikdə FirebaseMessagingService vasitəsilə öz kanalınızı yaratmaq tövsiyyə olunur. Data-mesajları kanal tələb etmir — tətbiq bildirişi necə və nə vaxt göstərəcəyinə özü qərar verir.
iOS-da FCM tətbiq serveri ilə APNS arasında vasitəçi rolunu oynayır. Firebase serverdən mesaj alır, onu APNS formatına sarır və Apple şlüzü vasitəsilə göndərir. Tərtibatçı Firebase konsolunda APNS açarını və ya sertifikatını konfiqurasiya etməlidir.
import FirebaseMessaging
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions options: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current().delegate = self
Messaging.messaging().delegate = self
return true
}
}
extension AppDelegate: MessagingDelegate {
func messaging(
_ messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
UserDefaults.standard.set(fcmToken, forKey: "fcm_token")
}
}
iOS-da APNS-də qeydiyyat asinxron şəkildə baş verir. FCM SDK avtomatik olaraq APNS tokenini alır və onu Firebase serverinə ötürür. didReceiveRegistrationToken yeni FCM tokeni alındıqda işə düşür, bu token APNS tokenini layihə identifikatoru ilə birləşdirir.
FCM çatdırılmanın monitorinqi üçün Firebase konsolu təqdim edir: göndərilən, qəbul edilən və göstərilən bildirişlərin sayı. Həmçinin server tərəfində çatdırılma xətalarını izləmək üçün Firebase Cloud Functions vasitəsilə status callback mövcuddur. Əsas metriklər: impressions (göstərmələr) və opens (açılmalar).
FCM ilə işləyərkən hər ssenari üçün düzgün mesaj növünü seçmək vacibdir. Sadə bildirişlər üçün avtomatik göstərmə ilə notification-mesajlarından istifadə edin. Tətbiqin göstərmədən əvvəl məlumatları emal etməsi lazım olduğu hallar üçün — data-mesajları. Qarışıq tip (notification + data) yalnız məlumatlar analitika üçün lazımdırsa tövsiyyə olunur, bildiriş məzmununu dəyişdirmək üçün deyil.
Tokenləri mərkəzləşdirilmiş şəkildə idarə edin. Cari tokenləri serverdə istifadəçiyə və platformaya bağlı cədvəldə saxlayın. Köhnəlmiş tokenlərin təmizlənməsi mexanizmini tətbiq edin: NotRegistered və ya InvalidRegistration xətası zamanı tokeni bazadan silin. Tokenlər nadir hallarda dəyişir, lakin onların təmizlənməsi FCM dəstəyinin məcburi elementidir.
Mesajları qruplaşdırmaq üçün kollaps açarlarından (collapseKey) istifadə edin. Eyni tipli bir neçə bildiriş göndərirsinizsə (məsələn, „valyuta məzənnəsinin yenilənməsi”), eyni collapseKey-i təyin edin. FCM qrupdan yalnız son mesajı çatdıracaq, bu da cihaz yükünü azaldır və istifadəçini bildiriş seli ilə qıcıqlandırmır.
Çatdırılmanı Firebase Console və Cloud Functions vasitəsilə izləyin. FCM analitikası göndərilən, qəbul edilən və göstərilən bildirişlərin sayını göstərir. Göstərmə faizi 70%-dən aşağıdırsa — Android-də kanal parametrlərini və iOS-da icazələri yoxlayın. Aşağı çatdırılma tez-tez söndürülmüş kanallar və ya bildiriş qadağası ilə əlaqəlidir. Beşincisi: bildiriş mətnini və göndərmə vaxtını optimallaşdırmaq üçün Firebase A/B testindən istifadə edin — bu, Firebase məlumatlarına görə açılma konversiyasını 15–25% artırır.
Tez-tez verilən suallar
FCM GCM (Google Cloud Messaging)-in təkamül yeniləməsidir. FCM Firebase Console vasitəsilə sadələşdirilmiş konfiqurasiya, quraşdırılmış analitika, mövzular və Web Push dəstəyi təklif edir. GCM 2019-cu ilin aprelindən rəsmi olaraq söndürülüb, bütün layihələr FCM-yə miqrasiya edilməlidir.
Firebase Cloud Messaging mesajların sayında məhdudiyyət olmayan pulsuz xidmətdir. Ödəniş yalnız Cloud Functions və ya Firestore kimi digər Firebase xidmətlərindən istifadəyə görə alınır. FCM əsas bildiriş göndərilməsi üçün Spark və ya Blaze abunəsi tələb etmir.
FCM tokeni aşağıdakı hallarda dəyişir: tətbiqin ehtiyat nüsxədən bərpası, tətbiq məlumatlarının təmizlənməsi, yenidən quraşdırma, Sender ID dəyişikliyi ilə yeni versiyaya yenilənmə. Serverə yeni token göndərmək üçün FirebaseMessagingService-də həmişə onNewToken-u emal edin.
Google FCM Çin ərazisində bloklanıb. Çində bildiriş çatdırılması üçün alternativ xidmətlərdən istifadə olunur: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Platformalararası çatdırılma üçün Getui kimi çoxprovayderli xidmətlər tətbiq edilir.
Quraşdırılmış Firebase konsolundan istifadə edin: „Cloud Messaging” — „Send Test Message” seçin. Test tokenini daxil edin və notification-mesaj göndərin. Cihazda bildiriş görünməlidir. Həmçinin FirebaseMessagingService.onMessageReceived jurnallarını izləyə bilərsiniz.
Xülasə
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