Firebase Cloud Messaging (FCM) — je multiplatformní služba pro doručování push oznámení a zpráv od společnosti Google, určená pro mobilní a webové aplikace. FCM zajišťuje spolehlivý přenos dat mezi serverem a klientskými zařízeními bez nutnosti udržovat trvalé síťové připojení. Podle Firebase Documentation, 2026 projde infrastrukturou FCM denně více než 300 miliard zpráv po celém světě. Služba podporuje jak oznámení s automatickým zobrazením, tak data zprávy pro skrytý přenos dat na pozadí.
Hlavní body
Firebase Cloud Messaging — je cloudová služba Google, která zajišťuje přenos push oznámení a data zpráv mezi serverem aplikace a klientskými zařízeními. Služba nahradila zastaralý Google Cloud Messaging (GCM) a stala se standardním řešením pro doručování push v ekosystému Firebase. FCM podporuje Android, iOS, Web a Unity a poskytuje jednotné rozhraní pro odesílání nezávisle na cílové platformě.
Služba poskytuje několik mechanismů doručování zpráv, z nichž každý řeší svůj vlastní úkol. Notification zprávy jsou systémem automaticky zobrazeny při přijetí — vývojář nemusí psát kód pro zobrazení oznámení. Data zprávy přenášejí libovolný payload ve formě párů klíč-hodnota a jsou zpracovávány uvnitř aplikace. Kombinované zprávy obsahují současně viditelnou i skrytou část pro maximální flexibilitu.
Implementace vlastního push serveru vyžaduje trvalé udržování TCP připojení s každým zařízením, což je neefektivní a nebezpečné. FCM využívá jednotnou infrastrukturu Google, která udržuje spojení s miliardami zařízení současně. Služba automaticky spravuje opakované pokusy o doručení, fronty zpráv a vyvažování zátěže, čímž osvobozuje vývojáře od potřeby řešit tyto úkoly samostatně.
Architektura FCM se skládá ze tří klíčových komponent: serveru poskytovatele (vaše backend), serveru Firebase Cloud Messaging a klientské aplikace na zařízení. Když server odešle zprávu, nejprve se dostane do infrastruktury FCM, která ji směruje na cílové zařízení. Pokud je zařízení offline, FCM zprávu uloží do fronty a doručí ji po obnovení připojení.
Při prvním spuštění aplikace zavolá Firebase SDK, který zaregistruje zařízení ve službě FCM a obdrží jedinečný Registration Token. Tento token je řetězec o délce přibližně 150 znaků, který identifikuje konkrétní instanci aplikace na konkrétním zařízení. Token se může změnit při přeinstalaci aplikace, smazání dat nebo obnovení ze zálohy — vývojář by měl zpracovat aktualizaci tokenu prostřednictvím delegáta onNewToken.
Když server odešle požadavek přes FCM API, zpráva prochází několika fázemi. Příjem a validace — FCM kontroluje správnost požadavku a existenci cílového zařízení. Fronta — pokud je zařízení nedostupné, zpráva se dostane do úložné fronty. Směrování — FCM určuje optimální kanál doručení (Wi-Fi nebo mobilní data). Doručení — systém předá zprávu cílové aplikaci. Po úspěšném doručení FCM vrátí serveru identifikátor zprávy.
Firebase Cloud Messaging podporuje tři typy zpráv, z nichž každý má své vlastní charakteristiky zpracování na straně klienta. Notification zprávy jsou zpracovávány systémovou službou Google Play Services v Android a APNs v iOS a automaticky zobrazovány jako push bannery. Data zprávy jsou předávány přímo aplikaci a zpracovávány prostřednictvím callbacku onMessageReceived v Android a application(_:didReceiveRemoteNotification:) v iOS.
Notification zpráva obsahuje předdefinovaná pole: title, body, URL obrázku a zvuk oznámení. Systém automaticky vytvoří a zobrazí oznámení v systémové liště, i když je aplikace na pozadí nebo ukončena. Uživatel vidí standardní banner s názvem a textem a po kliknutí se aplikace otevře s daty předanými v payloadu. Pokud je aplikace aktivní, notification zprávu lze zachytit a zpracovat v kódu.
Data zpráva je vlastní sada párů klíč-hodnota bez předdefinovaných polí. Payload není zpracováván systémem automaticky — aplikace obdrží surová data a může je libovolně interpretovat. Data zprávy se používají pro synchronizaci dat na pozadí, aktualizaci místní mezipaměti, spuštění synchronizace nebo předávání příkazů bez zobrazení oznámení. V Android je data zpráva doručena vždy, i když je aplikace ukončena nebo na pozadí.
FCM umožňuje odeslat zprávu, která obsahuje současně notification část (pro zobrazení) a data část (pro zpracování). Kombinovaný payload zahrnuje jak předdefinovaná pole notification, tak libovolné klíče data. Systém zobrazí oznámení z notification části a data část je při otevření předána do intent extras aplikace. To je vhodné pro scénáře, kde je třeba uživateli zobrazit oznámení a současně předat kontext pro přechod na konkrétní obrazovku.
| Typ | Automatické zobrazení | Zpracování na pozadí | Příklad |
|---|---|---|---|
| Notification | Ano, systémem | Automaticky, bez kódu | Uvítací push oznámení |
| Data | Ne | Přes callback aplikace | Synchronizace dat na pozadí |
| Kombinované | Ano, notification část | Data část při otevření | Oznámení + odkaz na objednávku |
Integrace FCM v Android začíná připojením Firebase SDK prostřednictvím souboru build.gradle na úrovni aplikace. Po přidání závislostí a souboru google-services.json aplikace automaticky obdrží Registration Token, který je předán prostřednictvím callbacku FirebaseMessagingService. Pro příjem oznámení je třeba vytvořit službu dědící z FirebaseMessagingService a zaregistrovat ji v AndroidManifest.xml.
Po připojení SDK Firebase automaticky vygeneruje token zařízení bez dalšího kódu. Token je dostupný přes FirebaseMessaging.getInstance().token, který vrací Task
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Nová zpráva"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
Služba pro příjem FCM zpráv musí být zaregistrována v AndroidManifest.xml s příslušným intent-filter. Přidání tagu service s oprávněním INTERNET a uvedením action. Bez registrace služby nebudou zprávy doručovány aplikaci na pozadí. Pro zobrazení oznámení v Android 13+ je vyžadováno runtime oprávnění POST_NOTIFICATIONS.
<!-- 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>
Integrace FCM v iOS vyžaduje konfiguraci jak na straně Apple Push Notification Service (APNs), tak v Firebase Console. Na rozdíl od Android, kde FCM spravuje připojení přímo, v iOS FCM používá APNs jako transportní vrstvu. Aplikace se registruje pro příjem push oznámení prostřednictvím UIApplication.shared.registerForRemoteNotifications a Firebase SDK zachytí přijatý device token a propojí jej s FCM Registration Token.
Pro fungování FCM v iOS je třeba nahrát APNs klíč nebo certifikát do Firebase Console. APNs klíč — je moderní způsob autentizace bez certifikátů (doporučovaný Apple). Klíč se vytváří v Apple Developer Portal v sekci Keys a nahrává se do nastavení Cloud Messaging v Firebase Console. Po konfiguraci APNs aplikace požádá o povolení k oznámením prostřednictvím UNUserNotificationCenter a zaregistruje se přes APNs.
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
}
}
Pro zpracování přijatých oznámení je implementován delegát UNUserNotificationCenter. Metoda willPresent je volána, když je oznámení přijato za aktivní aplikace — zde lze zobrazit vlastní in-app oznámení nebo ignorovat systémový banner. Metoda didReceive je volána, když uživatel klikne na oznámení — zde se provádí přechod na odpovídající obrazovku. Pro data zprávy se používá delegát MessagingDelegate, který přijímá payload při přijetí FCM zprávy na pozadí.
Serverové odesílání FCM zpráv se provádí prostřednictvím HTTP v1 API Firebase Cloud Messaging nebo zastaralého Firebase Cloud Messaging API. HTTP v1 API je doporučený způsob, používá autentizaci OAuth 2.0 přes Service Account a podporuje všechny moderní možnosti FCM, včetně analytiky doručení a A/B testování oznámení. Požadavek se odesílá metodou POST na endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.
Tělo požadavku obsahuje JSON objekt s informacemi o zprávě: target (token, téma nebo podmínka), notification (pro zobrazení) a data (vlastní payload). Autentizace pomocí Service Account JSON klíče, který je načten do proměnných prostředí serveru. Přístupový token je generován prostřednictvím knihovny google-auth-library. Google doporučuje používat Firebase Admin SDK pro automatickou správu autentizace a opakovaných pokusů.
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: "Sleva 20%", body: "Na všechny služby dnes" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Úspěšně odesláno:", response)
})
.catch(error => {
console.log("Chyba odesílání:", error)
})
Pro odesílání oznámení skupině uživatelů FCM podporuje odběr témat. Téma (topic) — je pojmenovaný kanál, na který se klientská aplikace přihlásí prostřednictvím FirebaseMessaging.getInstance().subscribeToTopic(). Server může odeslat zprávu na téma a bude doručena všem přihlášeným zařízením. Témata jsou vhodná pro newslettery, propagační oznámení a event push. Pro přesnější segmentaci se používají podmínky (conditions) založené na více tématech s logickými operátory.
Často kladené otázky
FCM funguje na Android přes vlastní infrastrukturu Google a na iOS používá APNs jako transportní protokol. FCM poskytuje jednotné API pro obě platformy, automatické ukládání zpráv offline a analytiku doručení, což v čistém APNs chybí.
Ano, prostřednictvím Firebase Console v sekci Cloud Messaging lze ručně odesílat oznámení na vybraná zařízení, témata nebo segmenty publika. Funkce je vhodná pro testování a jednorázové rozesílky, ale nenahrazuje serverovou integraci pro produkční aplikace.
Přihlaste se k odběru aktualizací tokenu prostřednictvím onNewToken v FirebaseMessagingService (Android) nebo MessagingDelegate (iOS). Při změně tokenu odešlete nový token na server a odstraňte starý. Server by měl aktualizovat databázi a zastavit pokusy o odesílání na zastaralý token.
FCM ukládá zprávu do fronty až na 28 dní a doručí ji po obnovení připojení. U notification zpráv je kolapsována pouze poslední zpráva pro každou kolapsovací skupinu. Data zprávy jsou ukládány samostatně a doručovány v pořadí odeslání bez kolapsace.
FCM je zcela zdarma bez omezení počtu zpráv. Používání FCM není účtováno ani v rámci plánu Spark, ani v plánu Blaze. Omezení se vztahují pouze na velikost payloadu: do 4 KB pro notification zprávy a do 2 KB pro data zprávy.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také