Az FCM (Firebase Cloud Messaging) a Google platformfüggetlen szolgáltatása a push-értesítések kézbesítésére és az adatok továbbítására a szerver és a mobilalkalmazások között. Támogatja az Android, iOS és webplatformokat egységes API-n keresztül. A Firebase Documentation szerint az FCM világszerte több mint 1 milliárd üzenetet dolgoz fel naponta.
Főbb pontok
A Firebase Cloud Messaging (FCM) egy felhőalapú szolgáltatás a Google-tól, amely megbízható push-értesítések és adatüzenetek kézbesítését biztosítja mobileszközökre. Korábban Google Cloud Messaging (GCM) néven ismert, az FCM a Firebase ökoszisztémában a platformfüggetlen értesítések fő eszközévé vált.
Az FCM automatikusan kiválasztja az optimális kézbesítési csatornát a platformtól függően: Androidon a saját FCM-kapcsolatot használja, iOS-en — az APNS-t (az FCM-átjárón keresztül). A fejlesztőnek nem kell két különböző integrációt megvalósítania — az FCM átveszi az útválasztást.
A szolgáltatás egységes REST API-t és Admin SDK-t biztosít az üzenetek küldéséhez. Ez lehetővé teszi az értesítések küldését a szerver oldaláról anélkül, hogy a címzett konkrét platformjához lenne kötve.
Az FCM több kézbesítési módot támogat: egyetlen üzenet egy adott eszközre, csoportos küldés téma szerint (topic) és szegmentált küldés feltételek szerint (condition). A küldés ütemezése és az értesítések tartalmának A/B tesztelése is elérhető.
Az FCM architektúrája három összetevőn alapul: a kliensalkalmazáson, a Firebase Connection Serveren és az alkalmazásszerveren (app server). A kliens regisztrál az FCM-ben induláskor, és egy egyedi regisztrációs tokent kap — egy karakterláncot, amely azonosítja az eszközt az adott alkalmazáshoz.
Az alkalmazásszerver kérést küld az FCM REST API-nak, megadva a címzett tokenjét vagy témáját. A Firebase Connection Server az üzenetet állandó XMPP-kapcsolaton vagy HTTP-kérésen keresztül kézbesíti. Ha az eszköz offline — az üzenet sorba kerül, és a kapcsolat helyreállításakor kézbesítésre kerül.
Az FCM a prioritási sorok és a fogadás visszaigazolási mechanizmusa segítségével garantálja a kézbesítést. Androidon az üzenet 28 napig tárolódik a sorban, iOS-en — 4 hétig (APNS-en keresztül). A határidő lejárta után az üzenet értesítés nélkül törlődik.
A regisztrációs token több esetben is megváltozhat: az alkalmazás adatainak visszaállításakor, új verzióra frissítéskor vagy a gyorsítótár törlésekor. Az alkalmazásnak implementálnia kell a FirebaseMessagingService.onNewToken metódust a token frissítésének és a szerverrel való szinkronizálásának kezelésére.
Az FCM kétféle hasznos terhet támogat: notification és data. Minden típus meghatározza, hogy az üzenet hogyan és mikor kerül feldolgozásra a címzett eszközén.
| Paraméter | Notification | Data |
|---|---|---|
| Automatikus megjelenítés | Igen, ha az alkalmazás háttérben van | Nem, csak az alkalmazásban |
| Feldolgozás | Rendszer — háttérben; app — előtérben | Mindig az alkalmazásban (onMessageReceived) |
| Maximális méret | 4 KB | 4 KB |
| Egyedi kulcsok | Előre meghatározott mezőkre korlátozva | Tetszőleges kulcs-érték párok |
| CollapseKey szükséges | Opcionális | Opcionális csoportosításhoz |
A gyakorlatban ajánlott data-üzeneteket használni, ha az alkalmazásnak teljes mértékben fel kell dolgoznia az értesítést az onMessageReceived-ben. A notification-üzenetek egyszerű forgatókönyvekhez alkalmasak, ahol a rendszer általi megjelenítés elegendő.
Az FCM és az APNS a két fő push-kézbesítési szolgáltatás. Az FCM platformfüggetlen átjáróként működik, az APNS — csak az Apple ökoszisztéma számára. Fő különbségeik az architektúrában, a tanúsítványkövetelményekben és az útválasztási mechanizmusokban rejlenek.
Az FCM és a közvetlen APNS közötti választás a projekt architektúrájától függ. Platformfüggetlen alkalmazásokhoz az FCM az optimális választás. Csak iOS projektekhez a közvetlen APNS-sel való munka a HTTP/2 API-n keresztül elfogadható.
Az FCM indokolt, ha a projekt egyszerre használ Androidot és iOS-t, valamint ha Firebase analitikára, értesítések A/B tesztelésére vagy témákra van szükség szerverlogika nélkül. A közvetlen APNS előnyösebb a csak iOS alkalmazásokhoz, minimális függőségekkel és szigorú kézbesítési késleltetési követelményekkel.
Az FCM Android-alkalmazáshoz csatlakoztatásához hozzá kell adni a Firebase SDK-t és konfigurálni kell a google-services.json-t a projekt gyökerében. A token regisztrációja után az alkalmazás készen áll az üzenetek fogadására a FirebaseMessagingService segítségével.
// 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)
}
}
}
A konfiguráció után az alkalmazás automatikusan megkapja az FCM tokent az első indításkor. A tokent el kell küldeni az alkalmazásszervernek az értesítések későbbi küldéséhez erre az eszközre.
Android 8+ rendszeren az automatikus megjelenítésű FCM-értesítés elküldése előtt létre kell hozni egy NotificationChannel-t. Az FCM notification-üzenetek az alapértelmezett ID-jű csatornát használják, de ajánlott saját csatornát létrehozni a FirebaseMessagingService segítségével az első üzenet fogadásakor. A data-üzenetek nem igényelnek csatornát — az alkalmazás maga dönti el, hogyan és mikor jeleníti meg az értesítést.
iOS-ben az FCM közvetítőként működik az alkalmazásszerver és az APNS között. A Firebase megkapja az üzenetet a szervertől, APNS formátumba csomagolja, és elküldi az Apple-átjárón keresztül. A fejlesztőnek konfigurálnia kell az APNS-kulcsot vagy tanúsítványt a Firebase konzolban.
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-ben az APNS-ben való regisztráció aszinkron módon történik. Az FCM SDK automatikusan megkapja az APNS tokent, és továbbítja a Firebase szervernek. A didReceiveRegistrationToken egy új FCM token fogadásakor aktiválódik, amely egyesíti az APNS tokent a projektazonosítóval.
Az FCM Firebase konzolt biztosít a kézbesítés monitorozásához: elküldött, fogadott és megjelenített értesítések száma. Elérhető továbbá egy állapot-visszahívás a Firebase Cloud Functions segítségével a kézbesítési hibák nyomon követésére a szerver oldalán. Főbb mérőszámok: impressions (megjelenítések) és opens (megnyitások).
Az FCM-mel való munka során fontos a megfelelő üzenettípus kiválasztása minden forgatókönyvhöz. Egyszerű, automatikusan megjelenő értesítésekhez használjon notification-üzeneteket. Azokban az esetekben, amikor az alkalmazásnak fel kell dolgoznia az adatokat a megjelenítés előtt — data-üzeneteket. A vegyes típus (notification + data) csak akkor ajánlott, ha az adatok analitikához szükségesek, nem az értesítés tartalmának megváltoztatásához.
Központilag kezelje a tokeneket. Tárolja az aktuális tokeneket a szerveren egy táblázatban, felhasználóhoz és platformhoz kapcsolva. Valósítson meg egy elavult tokenek tisztítási mechanizmust: NotRegistered vagy InvalidRegistration hiba esetén törölje a tokent az adatbázisból. A tokenek ritkán változnak, de tisztításuk az FCM-támogatás kötelező eleme.
Használjon összecsukási kulcsokat (collapseKey) az üzenetek csoportosításához. Ha több azonos típusú értesítést küld (például „valutaárfolyam-frissítés”), állítsa be ugyanazt a collapseKey-t. Az FCM csak a csoport utolsó üzenetét kézbesíti, ami csökkenti az eszköz terhelését és nem irritálja a felhasználót az értesítések áradatával.
Figyelje a kézbesítést a Firebase Console és a Cloud Functions segítségével. Az FCM analitika megjeleníti az elküldött, fogadott és megjelenített értesítések számát. Ha a megjelenítések aránya 70% alatt van — ellenőrizze a csatornabeállításokat Androidon és az engedélyeket iOS-en. Az alacsony kézbesítés gyakran kapcsolódik a letiltott csatornákhoz vagy az értesítési tilalomhoz. Ötödször: használja a Firebase A/B tesztelését az értesítések szövegének és a küldési idő optimalizálásához — ez 15–25%-kal növeli a megnyitási konverziót a Firebase adatai szerint.
Gyakran ismételt kérdések
Az FCM a GCM (Google Cloud Messaging) evolúciós frissítése. Az FCM egyszerűsített beállítást kínál a Firebase Console-on keresztül, beépített analitikát, témákat és Web Push támogatást. A GCM hivatalosan 2019 áprilisában lett kikapcsolva, minden projektet migrálni kell az FCM-re.
A Firebase Cloud Messaging egy ingyenes szolgáltatás, üzenetszám-korlátozás nélkül. Fizetés csak más Firebase-szolgáltatások, például a Cloud Functions vagy a Firestore használatáért történik. Az FCM nem igényel Spark vagy Blaze előfizetést az alapvető értesítésküldéshez.
Az FCM token a következő esetekben változik: az alkalmazás biztonsági másolatból történő visszaállításakor, az alkalmazás adatainak törlésekor, újratelepítéskor, új verzióra frissítéskor a Sender ID megváltozásával. Mindig dolgozza fel az onNewToken eseményt a FirebaseMessagingService-ben az új token szerverre küldéséhez.
A Google FCM blokkolva van Kína területén. Az értesítések Kínában történő kézbesítéséhez alternatív szolgáltatásokat használnak: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. A platformfüggetlen kézbesítéshez több szolgáltatós megoldásokat alkalmaznak, mint például a Getui.
Használja a beépített Firebase konzolt: válassza a „Cloud Messaging” — „Send Test Message” lehetőséget. Adja meg a teszt tokent, és küldjön egy notification üzenetet. Az eszközön meg kell jelennie egy értesítésnek. Ezenkívül figyelheti a FirebaseMessagingService.onMessageReceived naplóit.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is