FCM (Firebase Cloud Messaging) is een cross-platform dienst van Google voor het leveren van pushmeldingen en het overbrengen van gegevens tussen de server en mobiele applicaties. Het ondersteunt Android, iOS en webplatforms via één API. Volgens Firebase Documentation verwerkt FCM dagelijks meer dan 1 miljard berichten wereldwijd.
Belangrijkste punten
Firebase Cloud Messaging (FCM) is een clouddienst van Google die betrouwbare levering van pushmeldingen en databerichten naar mobiele apparaten mogelijk maakt. Voorheen bekend als Google Cloud Messaging (GCM), is FCM het belangrijkste hulpmiddel geworden voor cross-platform meldingen in het Firebase-ecosysteem.
FCM kiest automatisch het optimale leveringskanaal afhankelijk van het platform: op Android gebruikt het zijn eigen FCM-verbinding, op iOS — APNS (via de FCM-gateway). De ontwikkelaar hoeft geen twee verschillende integraties te implementeren — FCM neemt de routering over.
De dienst biedt een uniforme REST API en Admin SDK voor het verzenden van berichten. Dit maakt het mogelijk om meldingen van de serverzijde te versturen zonder gebonden te zijn aan een specifiek platform van de ontvanger.
FCM ondersteunt verschillende leveringsmodi: één bericht naar een specifiek apparaat, groepsverzending per onderwerp (topic) en segmentverzending op basis van voorwaarden (condition). Ook zijn planning van verzending en A/B-testen van meldingsinhoud beschikbaar.
De architectuur van FCM is gebaseerd op drie componenten: de clientapplicatie, Firebase Connection Server en de applicatieserver (app server). De client registreert zich bij FCM bij het opstarten en ontvangt een uniek registratietoken — een string die het apparaat identificeert voor deze applicatie.
De applicatieserver stuurt een verzoek naar de FCM REST API, met vermelding van het token van de ontvanger of het onderwerp. Firebase Connection Server levert het bericht via een permanente XMPP-verbinding of een HTTP-verzoek. Als het apparaat offline is — wordt het bericht in de wachtrij geplaatst en geleverd wanneer de verbinding wordt hersteld.
FCM garandeert levering met behulp van prioriteitswachtrijen en een bevestigingsmechanisme. Op Android wordt het bericht tot 28 dagen in de wachtrij bewaard, op iOS — tot 4 weken (via APNS). Na het verstrijken van de termijn wordt het bericht zonder melding verwijderd.
Het registratietoken kan in verschillende gevallen veranderen: bij het herstellen van applicatiegegevens, bij het updaten naar een nieuwe versie of bij het wissen van de cache. De applicatie moet FirebaseMessagingService.onNewToken implementeren voor het verwerken van tokenupdates en synchronisatie met de server.
FCM ondersteunt twee soorten payload: notification en data. Elk type bepaalt hoe en wanneer het bericht wordt verwerkt op het apparaat van de ontvanger.
| Parameter | Notification | Data |
|---|---|---|
| Automatische weergave | Ja, als de app op de achtergrond is | Nee, alleen in de app |
| Verwerking | Systeem — op achtergrond; app — op voorgrond | Altijd in de app (onMessageReceived) |
| Maximale grootte | 4 KB | 4 KB |
| Aangepaste sleutels | Beperkt tot vooraf gedefinieerde velden | Willekeurige sleutel-waardeparen |
| Vereist CollapseKey | Optioneel | Optioneel voor groepering |
In de praktijk wordt aangeraden om data-berichten te gebruiken als de applicatie de melding volledig moet verwerken in onMessageReceived. Notification-berichten zijn geschikt voor eenvoudige scenario's waar systeemweergave voldoende is.
FCM en APNS zijn de twee belangrijkste push-leveringsdiensten. FCM werkt als een cross-platform gateway, APNS — alleen voor het Apple-ecosysteem. Hun belangrijkste verschillen zitten in architectuur, certificaatvereisten en routeringsmechanismen.
De keuze tussen FCM en directe APNS hangt af van de projectarchitectuur. Voor cross-platform applicaties is FCM de optimale keuze. Voor iOS-only projecten is direct werken met APNS via HTTP/2 API acceptabel.
FCM is gerechtvaardigd wanneer het project tegelijkertijd Android en iOS gebruikt, en ook bij behoefte aan Firebase-analytics, A/B-testen van meldingen of onderwerpen zonder serverlogica. Directe APNS heeft de voorkeur voor iOS-only applicaties met minimale afhankelijkheden en strikte vereisten voor leveringsvertraging.
Om FCM met een Android-applicatie te verbinden, moet u Firebase SDK toevoegen en google-services.json configureren in de hoofdmap van het project. Na registratie van het token is de applicatie klaar om berichten te ontvangen via FirebaseMessagingService.
// build.gradle (Module)
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)
}
}
}
Na configuratie ontvangt de applicatie automatisch het FCM-token bij de eerste start. Het token moet naar de applicatieserver worden gestuurd voor het later verzenden van meldingen naar dit apparaat.
Op Android 8+ moet voordat een FCM-melding met automatische weergave wordt verzonden, een NotificationChannel worden aangemaakt. FCM notification-berichten gebruiken het kanaal met standaard-ID, maar het wordt aanbevolen om uw eigen kanaal te maken via FirebaseMessagingService bij ontvangst van het eerste bericht. Data-berichten hebben geen kanaal nodig — de applicatie beslist zelf hoe en wanneer de melding wordt weergegeven.
Op iOS fungeert FCM als tussenpersoon tussen de applicatieserver en APNS. Firebase ontvangt het bericht van de server, wikkelt het in APNS-formaat en stuurt het via de Apple-gateway. De ontwikkelaar moet de APNS-sleutel of het certificaat configureren in de Firebase-console.
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")
}
}
Op iOS vindt registratie bij APNS asynchroon plaats. FCM SDK ontvangt automatisch het APNS-token en stuurt het naar de Firebase-server. didReceiveRegistrationToken wordt geactiveerd bij ontvangst van een nieuw FCM-token, dat het APNS-token combineert met de projectidentificatie.
FCM biedt de Firebase-console voor het monitoren van levering: aantal verzonden, ontvangen en weergegeven meldingen. Ook is een status-callback beschikbaar via Firebase Cloud Functions voor het volgen van leveringsfouten aan de serverzijde. Belangrijkste statistieken: impressions (weergaven) en opens (openingen).
Bij het werken met FCM is het belangrijk om het juiste berichttype voor elk scenario te kiezen. Voor eenvoudige meldingen met automatische weergave gebruikt u notification-berichten. Voor gevallen waarin de applicatie gegevens moet verwerken voordat deze worden weergegeven — data-berichten. Het gemengde type (notification + data) wordt alleen aanbevolen als de gegevens nodig zijn voor analyse, niet voor het wijzigen van de meldingsinhoud.
Beheer tokens gecentraliseerd. Bewaar actuele tokens op de server in een tabel met koppeling aan gebruiker en platform. Implementeer een mechanisme voor het opschonen van verouderde tokens: verwijder bij fout NotRegistered of InvalidRegistration het token uit de database. Tokens veranderen zelden, maar het opschonen ervan is een verplicht onderdeel van FCM-ondersteuning.
Gebruik collapseKeys voor het groeperen van berichten. Als u meerdere meldingen van hetzelfde type verzendt (bijvoorbeeld „valutakoersupdate”), stel dan dezelfde collapseKey in. FCM levert alleen het laatste bericht uit de groep, wat de belasting van het apparaat vermindert en de gebruiker niet irriteert met een vloedgolf aan meldingen.
Bewaak de levering via Firebase Console en Cloud Functions. FCM-analytics toont het aantal verzonden, ontvangen en weergegeven meldingen. Als het weergavepercentage lager is dan 70% — controleer dan de kanaalinstellingen op Android en de machtigingen op iOS. Lage levering wordt vaak veroorzaakt door uitgeschakelde kanalen of een meldingsverbod. Ten vijfde: gebruik Firebase A/B-testen voor het optimaliseren van meldingstekst en verzendtijd — dit verhoogt de openingsconversie met 15–25% volgens Firebase-gegevens.
Veelgestelde vragen
FCM is een evolutionaire update van GCM (Google Cloud Messaging). FCM biedt vereenvoudigde configuratie via Firebase Console, ingebouwde analytics, onderwerpen en ondersteuning voor Web Push. GCM is officieel uitgeschakeld sinds april 2019, alle projecten moeten naar FCM worden gemigreerd.
Firebase Cloud Messaging is een gratis dienst zonder beperkingen op het aantal berichten. Betaling wordt alleen in rekening gebracht voor het gebruik van andere Firebase-diensten zoals Cloud Functions of Firestore. FCM vereist geen Spark- of Blaze-abonnement voor het basis verzenden van meldingen.
Het FCM-token verandert bij: herstellen van de app uit back-up, wissen van app-gegevens, herinstallatie, updaten naar een nieuwe versie met gewijzigde Sender ID. Verwerk altijd onNewToken in FirebaseMessagingService om het nieuwe token naar de server te sturen.
Google FCM is geblokkeerd op het grondgebied van China. Voor het leveren van meldingen in China worden alternatieve diensten gebruikt: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Voor cross-platform levering worden multi-provider diensten zoals Getui toegepast.
Gebruik de ingebouwde Firebase-console: selecteer „Cloud Messaging” — „Send Test Message”. Voer het testtoken in en verzend een notification-bericht. Op het apparaat zou een melding moeten verschijnen. U kunt ook de FirebaseMessagingService.onMessageReceived-logboeken controleren.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook