Firebase Cloud Messaging (FCM) — egy platformok közötti szolgáltatás push értesítések és üzenetek szállítására a Google-tól, mobil és webes alkalmazások számára. Az FCM megbízható adatátvitelt biztosít a szerver és a kliens eszközök között anélkül, hogy állandó hálózati kapcsolatot kellene fenntartani. A Firebase Documentation, 2026 szerint az FCM infrastruktúráján naponta több mint 300 milliárd üzenet halad át világszerte. A szolgáltatás támogatja mind az automatikusan megjelenő értesítéseket, mind a data üzeneteket a rejtett adatátvitelhez a háttérben.
Főbb pontok
Firebase Cloud Messaging — egy Google felhőszolgáltatás, amely push értesítések és data üzenetek átvitelét biztosítja az alkalmazásszerver és a kliens eszközök között. A szolgáltatás felváltotta az elavult Google Cloud Messaging (GCM) szolgáltatást, és szabványos megoldássá vált a push kézbesítésére a Firebase ökoszisztémában. Az FCM támogatja az Android, iOS, Web és Unity platformokat, egységes küldési felületet biztosítva a célplatformtól függetlenül.
A szolgáltatás több üzenetkézbesítési mechanizmust kínál, amelyek mindegyike a saját feladatát oldja meg. A notification üzeneteket a rendszer automatikusan megjeleníti érkezéskor — a fejlesztőnek nem kell kódot írnia az értesítés megjelenítéséhez. A data üzenetek tetszőleges payload-ot küldenek kulcs-érték párok formájában, és az alkalmazáson belül dolgozódnak fel. A kombinált üzenetek egyszerre tartalmaznak látható és rejtett részt a maximális rugalmasság érdekében.
Saját push szerver implementálása állandó TCP kapcsolat fenntartását igényli minden eszközzel, ami hatástalan és nem biztonságos. Az FCM a Google egységes infrastruktúráját használja, amely egyszerre milliárdnyi eszközzel tart kapcsolatot. A szolgáltatás automatikusan kezeli az ismételt kézbesítési kísérleteket, az üzenetsorokat és a terheléselosztást, felszabadítva a fejlesztőt e feladatok önálló megoldásának szükségessége alól.
Az FCM architektúrája három fő összetevőből áll: a szolgáltató szerverből (az Ön backendje), a Firebase Cloud Messaging szerverből és a kliens alkalmazásból az eszközön. Amikor a szerver üzenetet küld, az először az FCM infrastruktúrába kerül, amely a cél eszközhöz irányítja. Ha az eszköz offline, az FCM eltárolja az üzenetet egy sorban, és a kapcsolat helyreállításakor kézbesíti.
Az első indításkor az alkalmazás meghívja a Firebase SDK-t, amely regisztrálja az eszközt az FCM szolgáltatásban, és egyedi Registration Token-t kap. Ez a token egy körülbelül 150 karakter hosszúságú karaktersorozat, amely az alkalmazás egy adott példányát azonosítja egy adott eszközön. A token megváltozhat az alkalmazás újratelepítésekor, adatok törlésekor vagy biztonsági mentésből való visszaállításkor — a fejlesztőnek az onNewToken delegált segítségével kell kezelnie a token frissítését.
Amikor a szerver kérést küld az FCM API-n keresztül, az üzenet több szakaszon megy keresztül. Fogadás és érvényesítés — az FCM ellenőrzi a kérés helyességét és a cél eszköz létezését. Sor — ha az eszköz nem elérhető, az üzenet tárolási sorba kerül. Útválasztás — az FCM meghatározza az optimális kézbesítési csatornát (Wi-Fi vagy mobil adat). Kézbesítés — a rendszer továbbítja az üzenetet a cél alkalmazásnak. Sikeres kézbesítés után az FCM visszaadja a szervernek az üzenet azonosítóját.
A Firebase Cloud Messaging háromféle üzenetet támogat, amelyek mindegyike saját feldolgozási jellemzőkkel rendelkezik a kliens oldalon. A notification üzeneteket a Google Play Services rendszerszolgáltatás dolgozza fel Androidban és az APNs iOS-ben, és automatikusan push bannerként jelennek meg. A data üzenetek közvetlenül az alkalmazásba kerülnek, és az onMessageReceived callback-en keresztül dolgozódnak fel Androidban, illetve az application(_:didReceiveRemoteNotification:) callback-en keresztül iOS-ben.
A notification üzenet előre meghatározott mezőket tartalmaz: title, body, kép URL és értesítési hang. A rendszer automatikusan létrehozza és megjeleníti az értesítést a rendszer tálcáján, még akkor is, ha az alkalmazás a háttérben van vagy le van állítva. A felhasználó egy szabványos bannert lát címmel és szöveggel, és kattintáskor az alkalmazás a payload-ban átadott adatokkal nyílik meg. Ha az alkalmazás aktív, a notification üzenet elfogható és feldolgozható a kódban.
A data üzenet egyedi kulcs-érték párok halmaza előre meghatározott mezők nélkül. A payload-ot a rendszer nem dolgozza fel automatikusan — az alkalmazás nyers adatokat kap, és azokat tetszőlegesen értelmezheti. A data üzenetek háttérben történő adatszinkronizálásra, helyi gyorsítótár frissítésére, szinkronizáció indítására vagy parancsok továbbítására használatosak értesítés megjelenítése nélkül. Androidban a data üzenet mindig kézbesítésre kerül, még akkor is, ha az alkalmazás le van állítva vagy a háttérben fut.
Az FCM lehetővé teszi olyan üzenet küldését, amely egyszerre tartalmaz notification részt (megjelenítéshez) és data részt (feldolgozáshoz). A kombinált payload magában foglalja mind a notification előre meghatározott mezőit, mind a data tetszőleges kulcsait. A rendszer a notification részből jeleníti meg az értesítést, a data rész pedig az alkalmazás intent extras-aiba kerül megnyitáskor. Ez olyan forgatókönyveknél hasznos, ahol értesítést kell mutatni a felhasználónak, és egyidejűleg kontextust kell átadni egy adott képernyőre navigáláshoz.
| Típus | Automatikus megjelenítés | Háttérben feldolgozás | Példa |
|---|---|---|---|
| Notification | Igen, a rendszer által | Automatikusan, kód nélkül | Üdvözlő push értesítés |
| Data | Nem | Az alkalmazás callback-jén keresztül | Adatszinkronizálás a háttérben |
| Kombinált | Igen, notification rész | Data rész megnyitáskor | Értesítés + rendelési link |
Az FCM integrációja Androidban a Firebase SDK csatlakoztatásával kezdődik a build.gradle fájlon keresztül alkalmazás szinten. A függőségek és a google-services.json fájl hozzáadása után az alkalmazás automatikusan megkapja a Registration Token-t, amelyet a FirebaseMessagingService callback továbbít. Az értesítések fogadásához létre kell hozni egy szolgáltatást, amely a FirebaseMessagingService-ből származik, és regisztrálni kell az AndroidManifest.xml-ben.
Az SDK csatlakoztatása után a Firebase automatikusan létrehozza az eszköz tokenjét további kód nélkül. A token elérhető a FirebaseMessaging.getInstance().token segítségével, amely Task
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Új üzenet"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
Az FCM üzenetek fogadására szolgáló szolgáltatást regisztrálni kell az AndroidManifest.xml-ben a megfelelő intent-filter-rel. A service tag hozzáadása INTERNET engedéllyel és az action megadásával. A szolgáltatás regisztrációja nélkül az üzenetek nem kerülnek kézbesítésre az alkalmazásnak a háttérben. Az értesítések megjelenítéséhez Android 13+-ban runtime engedély, a POST_NOTIFICATIONS szükséges.
<!-- 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>
Az FCM integrációja iOS-ben konfigurációt igényel mind az Apple Push Notification Service (APNs) oldalán, mind a Firebase Console-ban. Ellentétben Androiddal, ahol az FCM közvetlenül kezeli a kapcsolatot, iOS-ben az FCM az APNs-t használja szállítási rétegként. Az alkalmazás regisztrál a push értesítések fogadására az UIApplication.shared.registerForRemoteNotifications segítségével, a Firebase SDK pedig elfogja a kapott device token-t, és összekapcsolja az FCM Registration Token-nel.
Az FCM működéséhez iOS-ben fel kell tölteni egy APNs kulcsot vagy tanúsítványt a Firebase Console-ba. Az APNs kulcs — egy modern hitelesítési módszer tanúsítványok nélkül (az Apple ajánlja). A kulcs az Apple Developer Portal Keys szekciójában jön létre, és a Firebase Console Cloud Messaging beállításaiban kerül feltöltésre. Az APNs konfigurálása után az alkalmazás engedélyt kér az értesítésekre az UNUserNotificationCenter-en keresztül, és regisztrál az APNs-en keresztül.
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
}
}
A fogadott értesítések feldolgozásához az UNUserNotificationCenter delegált implementálása szükséges. A willPresent metódus akkor hívódik meg, amikor az értesítés aktív alkalmazás mellett érkezik — itt megjeleníthető egy egyedi in-app értesítés, vagy figyelmen kívül hagyható a rendszer banner. A didReceive metódus akkor hívódik meg, amikor a felhasználó az értesítésre kattint — itt történik a megfelelő képernyőre navigálás. A data üzenetekhez a MessagingDelegate delegált használatos, amely a payload-ot kapja az FCM üzenet háttérben történő fogadásakor.
Szerver oldali küldés az FCM üzeneteknek a HTTP v1 API Firebase Cloud Messaging vagy az elavult Firebase Cloud Messaging API segítségével történik. A HTTP v1 API az ajánlott módszer, OAuth 2.0 hitelesítést használ Service Account-on keresztül, és támogatja az FCM összes modern képességét, beleértve a kézbesítési analitikát és az értesítések A/B tesztelését. A kérés POST metódussal kerül elküldésre a https://fcm.googleapis.com/v1/projects/{project_id}/messages:send végpontra.
A kérés törzse egy JSON objektumot tartalmaz az üzenet információival: target (token, téma vagy feltétel), notification (megjelenítéshez) és data (egyedi payload). Hitelesítés a Service Account JSON kulcson keresztül, amely a szerver környezeti változóiba kerül betöltésre. A hozzáférési token a google-auth-library könyvtáron keresztül jön létre. A Google a Firebase Admin SDK használatát ajánlja a hitelesítés és az ismételt próbálkozások automatikus kezeléséhez.
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% kedvezmény", body: "Minden szolgáltatásra ma" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Sikeresen elküldve:", response)
})
.catch(error => {
console.log("Küldési hiba:", error)
})
Az értesítések felhasználói csoportnak történő küldéséhez az FCM támogatja a témákra való feliratkozást. A téma (topic) — egy elnevezett csatorna, amelyre a kliens alkalmazás a FirebaseMessaging.getInstance().subscribeToTopic() segítségével iratkozik fel. A szerver üzenetet küldhet egy témára, amely az összes feliratkozott eszközre kézbesítésre kerül. A témák alkalmasak hírlevelekhez, promóciós értesítésekhez és esemény push-okhoz. Pontosabb szegmentáláshoz feltételek (conditions) használhatók több téma alapján logikai operátorokkal.
Gyakran ismételt kérdések
Az FCM Androidban a Google saját infrastruktúráján keresztül működik, iOS-ben pedig az APNs-t használja szállítási protokollként. Az FCM egységes API-t biztosít mindkét platformhoz, automatikus offline üzenettárolást és kézbesítési analitikát, ami a tiszta APNs-ben nem található meg.
Igen, a Firebase Console Cloud Messaging szekciójában kézzel küldhetők értesítések kiválasztott eszközökre, témákra vagy célcsoport-szegmensekre. A funkció tesztelésre és egyszeri küldésekre alkalmas, de nem helyettesíti a szerver integrációt éles alkalmazásokhoz.
Iratkozzon fel a token frissítésekre az onNewToken segítségével a FirebaseMessagingService-ben (Android) vagy a MessagingDelegate-ben (iOS). Token változáskor küldje el az új token-t a szerverre, és törölje a régit. A szervernek frissítenie kell az adatbázist, és le kell állítania a küldési kísérleteket az elavult token-re.
Az FCM tárolja az üzenetet a sorban akár 28 napig, és a kapcsolat helyreállításakor kézbesíti. A notification üzeneteknél csak az utolsó üzenet kerül összecsukásra minden egyes összecsukási csoporthoz. A data üzenetek külön tárolódnak, és a küldés sorrendjében kerülnek kézbesítésre összecsukás nélkül.
Az FCM teljesen ingyenes az üzenetek számának korlátozása nélkül. Az FCM használata nem számolódik el sem a Spark terv, sem a Blaze terv keretében. Korlátozások csak a payload méretére vonatkoznak: notification üzeneteknél 4 KB-ig, data üzeneteknél 2 KB-ig.
Ö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