Firebase Cloud Messaging: wat is het, werkingsprincipe en pushmeldingen

Auteur: IT Sectr Gepubliceerd: 2026-04-29 Leestijd: 9 min

Firebase Cloud Messaging (FCM) — is een cross-platform dienst voor het leveren van pushmeldingen en berichten van Google, bedoeld voor mobiele en webapplicaties. FCM zorgt voor betrouwbare gegevensoverdracht tussen de server en client-apparaten zonder dat er een permanente netwerkverbinding nodig is. Volgens Firebase Documentation, 2026 passeren dagelijks meer dan 300 miljard berichten de FCM-infrastructuur wereldwijd. De dienst ondersteunt zowel meldingen met automatische weergave als data-berichten voor verborgen gegevensoverdracht op de achtergrond.

Belangrijkste punten

  • FCM — gratis pushmeldingendienst van Google met ondersteuning voor Android, iOS en Web via één API en Firebase Console.
  • Berichttypen — notification-berichten worden automatisch door het systeem weergegeven, data-berichten maken het mogelijk willekeurige JSON te verzenden en te verwerken in de app.
  • Apparaattokens — elke app ontvangt een unieke Registration Token die de server gebruikt voor gerichte verzending van pushmeldingen.
  • Leveringsprioriteiten — normal en high prioriteiten bepalen het systeemgedrag bij batterijbesparing: high-berichten wekken het apparaat uit de Doze-modus.
  • Onderwerpen en groepen — FCM ondersteunt abonnementen op onderwerpen voor massaverzending en Device Groups voor verzending naar meerdere apparaten van één gebruiker.

Wat is Firebase Cloud Messaging

Firebase Cloud Messaging — is een clouddienst van Google die pushmeldingen en data-berichten overdraagt tussen de applicatieserver en client-apparaten. De dienst heeft de verouderde Google Cloud Messaging (GCM) vervangen en is de standaardoplossing geworden voor push-levering in het Firebase-ecosysteem. FCM ondersteunt Android, iOS, Web en Unity en biedt een uniforme verzendinterface ongeacht het doelplatform.

Belangrijkste mogelijkheden van FCM

De dienst biedt verschillende mechanismen voor berichtlevering, elk met een eigen taak. Notification-berichten worden bij ontvangst automatisch door het systeem weergegeven — de ontwikkelaar hoeft geen code te schrijven voor het tonen van de melding. Data-berichten verzenden een willekeurige payload in de vorm van sleutel-waardeparen en worden in de app verwerkt. Gecombineerde berichten bevatten zowel zichtbare als verborgen delen voor maximale flexibiliteit.

Voordelen ten opzichte van een eigen oplossing

Het implementeren van een eigen push-server vereist het permanent onderhouden van een TCP-verbinding met elk apparaat, wat inefficiënt en onveilig is. FCM gebruikt de uniforme Google-infrastructuur die tegelijkertijd met miljarden apparaten verbinding onderhoudt. De dienst beheert automatisch herhaalde leveringspogingen, berichtenwachtrijen en belastingverdeling, waardoor de ontwikkelaar niet zelf deze taken hoeft op te lossen.

Hoe werkt Firebase Cloud Messaging

FCM-architectuur bestaat uit drie hoofdcomponenten: de provider-server (uw backend), de Firebase Cloud Messaging-server en de client-app op het apparaat. Wanneer de server een bericht verzendt, komt het eerst in de FCM-infrastructuur terecht, die het naar het doelapparaat routeert. Als het apparaat offline is, slaat FCM het bericht op in een wachtrij en levert het wanneer de verbinding wordt hersteld.

Apparaatregistratie en tokenverkrijging

Bij de eerste start roept de app de Firebase SDK aan, die het apparaat registreert bij de FCM-dienst en een unieke Registration Token ontvangt. Deze token is een tekenreeks van ongeveer 150 tekens die een specifieke app-instantie op een specifiek apparaat identificeert. De token kan veranderen bij herinstallatie van de app, wissen van gegevens of herstel vanuit een back-up — de ontwikkelaar moet de token-update verwerken via de onNewToken-delegate.

Levenscyclus van een bericht

Wanneer de server een verzoek verzendt via de FCM API, doorloopt het bericht verschillende fasen. Ontvangst en validatie — FCM controleert de juistheid van het verzoek en het bestaan van het doelapparaat. Wachtrij — als het apparaat niet beschikbaar is, komt het bericht in de opslagwachtrij. Routering — FCM bepaalt het optimale leveringskanaal (wifi of mobiele data). Levering — het systeem geeft het bericht door aan de doelapp. Na succesvolle levering retourneert FCM een bericht-ID aan de server.

Berichttypen in FCM

Firebase Cloud Messaging ondersteunt drie soorten berichten, elk met eigen verwerkingskenmerken aan clientzijde. Notification-berichten worden verwerkt door de systeemdienst Google Play Services in Android en APNs in iOS en automatisch weergegeven als push-banners. Data-berichten worden rechtstreeks aan de app doorgegeven en verwerkt via de callback onMessageReceived in Android en application(_:didReceiveRemoteNotification:) in iOS.

Notification-berichten

Een notification-bericht bevat vooraf gedefinieerde velden: title, body, afbeeldings-URL en meldingsgeluid. Het systeem maakt en toont automatisch de melding in het systeemvak, zelfs als de app op de achtergrond is of beëindigd. De gebruiker ziet een standaard banner met titel en tekst, en bij aanklikken wordt de app geopend met de in de payload doorgegeven gegevens. Als de app actief is, kan het notification-bericht worden onderschept en in code worden verwerkt.

Data-berichten

Een data-bericht is een aangepaste set sleutel-waardeparen zonder vooraf gedefinieerde velden. De payload wordt niet automatisch door het systeem verwerkt — de app ontvangt ruwe gegevens en kan deze naar wens interpreteren. Data-berichten worden gebruikt voor gegevenssynchronisatie op de achtergrond, bijwerken van lokale cache, triggeren van synchronisatie of doorgeven van opdrachten zonder melding weer te geven. In Android wordt een data-bericht altijd geleverd, zelfs als de app is beëindigd of op de achtergrond draait.

Gecombineerde berichten

FCM maakt het mogelijk een bericht te verzenden dat zowel een notification-gedeelte (voor weergave) als een data-gedeelte (voor verwerking) bevat. Gecombineerde payload omvat zowel de vooraf gedefinieerde notification-velden als de willekeurige data-sleutels. Het systeem toont de melding uit het notification-gedeelte en het data-gedeelte wordt bij het openen doorgegeven aan de intent extras van de app. Dit is handig voor scenario's waarin u een melding aan de gebruiker wilt tonen en tegelijkertijd context voor navigatie naar een specifiek scherm wilt doorgeven.

TypeAuto-weergaveVerwerking op achtergrondVoorbeeld
NotificationJa, door systeemAutomatisch, zonder codeWelkomst pushmelding
DataNeeVia app-callbackGegevenssynchronisatie op achtergrond
GecombineerdJa, notification-gedeelteData-gedeelte bij openenMelding + bestellink

FCM instellen in Android

FCM-integratie in Android begint met het aansluiten van de Firebase SDK via het build.gradle-bestand op app-niveau. Na het toevoegen van afhankelijkheden en het google-services.json-bestand ontvangt de app automatisch de Registration Token, die wordt doorgegeven via de FirebaseMessagingService-callback. Voor het ontvangen van meldingen moet een service worden gemaakt die overerft van FirebaseMessagingService en worden geregistreerd in AndroidManifest.xml.

Initialisatie en tokenverkrijging

Na het aansluiten van de SDK genereert Firebase automatisch de apparaattoken zonder extra code. De token is toegankelijk via FirebaseMessaging.getInstance().token, die Task retourneert. Voor het bijhouden van token-updates wordt de methode onNewToken in de service overschreven. De token moet naar de provider-server worden gestuurd zodat de server pushmeldingen naar dit apparaat kan verzenden.

kotlin
class MyFirebaseMessagingService :
    FirebaseMessagingService() {

    override fun onNewToken(token: String) {
        sendTokenToServer(token)
    }

    override fun onMessageReceived(
        message: RemoteMessage
    ) {
        val data = message.data
        val title = "Nieuw bericht"
        val body = data["body"] ?: ""
        showNotification(title, body)
    }
}

Service registreren in het manifest

De service voor het ontvangen van FCM-berichten moet worden geregistreerd in AndroidManifest.xml met de juiste intent-filter. Toevoegen van de service-tag met INTERNET-machtiging en vermelding van action. Zonder registratie van de service worden berichten niet aan de app op de achtergrond geleverd. Voor het weergeven van meldingen in Android 13+ is runtime-machtiging POST_NOTIFICATIONS vereist.

xml
<!-- 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>

FCM instellen in iOS

FCM-integratie in iOS vereist configuratie zowel aan de kant van Apple Push Notification Service (APNs) als in Firebase Console. In tegenstelling tot Android, waar FCM de verbinding direct beheert, gebruikt FCM in iOS APNs als transportlaag. De app registreert zich voor het ontvangen van pushmeldingen via UIApplication.shared.registerForRemoteNotifications, en de Firebase SDK onderschept de ontvangen device token en koppelt deze aan de FCM Registration Token.

APNs configureren en registreren voor meldingen

Voor werking van FCM in iOS moet een APNs-sleutel of -certificaat worden geüpload in Firebase Console. APNs-sleutel — dit is een moderne authenticatiemethode zonder certificaten (aanbevolen door Apple). De sleutel wordt aangemaakt in Apple Developer Portal in de sectie Keys en geüpload in de Cloud Messaging-instellingen in Firebase Console. Na APNs-configuratie vraagt de app toestemming voor meldingen via UNUserNotificationCenter en registreert zich via APNs.

swift
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
    }
}

Verwerken van inkomende meldingen

Voor het verwerken van ontvangen meldingen wordt de UNUserNotificationCenter-delegate geïmplementeerd. De methode willPresent wordt aangeroepen wanneer een melding wordt ontvangen terwijl de app actief is — hier kan een aangepaste in-app melding worden getoond of de systeembanner worden genegeerd. De methode didReceive wordt aangeroepen wanneer de gebruiker op de melding klikt — hier wordt de navigatie naar het bijbehorende scherm uitgevoerd. Voor data-berichten wordt de MessagingDelegate gebruikt, die de payload ontvangt bij ontvangst van een FCM-bericht op de achtergrond.

Berichten verzenden vanaf de server

Server-side verzending van FCM-berichten gebeurt via de HTTP v1 API van Firebase Cloud Messaging of de verouderde Firebase Cloud Messaging API. De HTTP v1 API is de aanbevolen methode, gebruikt OAuth 2.0-authenticatie via Service Account en ondersteunt alle moderne FCM-mogelijkheden, waaronder leveringsanalyse en A/B-testen van meldingen. Het verzoek wordt verzonden via de POST-methode naar het endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.

Formaat van HTTP v1-verzoek

De verzoekbody bevat een JSON-object met informatie over het bericht: target (token, onderwerp of voorwaarde), notification (voor weergave) en data (aangepaste payload). Authenticatie via de Service Account JSON-sleutel, die wordt geladen in de omgevingsvariabelen van de server. De toegangstoken wordt gegenereerd via de google-auth-library. Google raadt het gebruik van Firebase Admin SDK aan voor automatisch beheer van authenticatie en herhaalde pogingen.

js
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% korting", body: "Op alle diensten vandaag" },
    data: { screen: "promo", promoId: "324" },
    android: { priority: "high" },
    apns: { payload: { aps: { sound: "default" } } }
}

admin.messaging().send(message)
    .then(response => {
        console.log("Succesvol verzonden:", response)
    })
    .catch(error => {
        console.log("Verzendfout:", error)
    })

Onderwerpen en massaverzending

Voor het verzenden van meldingen naar een groep gebruikers ondersteunt FCM abonnementen op onderwerpen. Een onderwerp (topic) — is een benoemd kanaal waarop de client-app zich abonneert via FirebaseMessaging.getInstance().subscribeToTopic(). De server kan een bericht naar een onderwerp sturen en het wordt aan alle geabonneerde apparaten geleverd. Onderwerpen zijn geschikt voor nieuwsbrieven, promotionele meldingen en event-push. Voor nauwkeurigere segmentatie worden voorwaarden (conditions) gebruikt op basis van meerdere onderwerpen met logische operatoren.

Veelgestelde vragen

Wat is het verschil tussen FCM en APNs?

FCM werkt op Android via de eigen Google-infrastructuur en gebruikt op iOS APNs als transportprotocol. FCM biedt één API voor beide platforms, automatische offline berichtopslag en leveringsanalyse, die niet beschikbaar zijn in pure APNs.

Kunnen FCM-berichten zonder server worden verzonden?

Ja, via Firebase Console in de sectie Cloud Messaging kunnen handmatig meldingen worden verzonden naar geselecteerde apparaten, onderwerpen of doelgroeptargets. De functie is geschikt voor testen en eenmalige verzendingen, maar vervangt geen serverintegratie voor productie-apps.

Wat moet ik doen als de apparaattoken is veranderd?

Abonneer u op token-updates via onNewToken in FirebaseMessagingService (Android) of MessagingDelegate (iOS). Stuur bij tokenwijziging de nieuwe token naar de server en verwijder de oude. De server moet de database bijwerken en stoppen met verzenden naar de verouderde token.

Hoe gaat FCM om met offline apparaten?

FCM slaat het bericht maximaal 28 dagen op in een wachtrij en levert het wanneer de verbinding wordt hersteld. Voor notification-berichten wordt alleen het laatste bericht voor elke collapse-groep gecollapst. Data-berichten worden apart opgeslagen en zonder collapse in verzendvolgorde geleverd.

Wat kost het gebruik van Firebase Cloud Messaging?

FCM is volledig gratis zonder beperkingen op het aantal berichten. Gebruik van FCM wordt niet in rekening gebracht, noch in het Spark-plan noch in het Blaze-plan. Beperkingen gelden alleen voor de payload-grootte: tot 4 KB voor notification-berichten en tot 2 KB voor data-berichten.

Samenvatting

  • Firebase Cloud Messaging — cross-platform pushmeldingendienst van Google die Android, iOS, Web en Unity ondersteunt via één API.
  • FCM-architectuur bestaat uit de provider-server, Firebase-infrastructuur en client-app en zorgt voor betrouwbare berichtlevering via het wereldwijde Google-netwerk.
  • Drie berichttypen — notification (auto-weergave), data (willekeurige payload zonder UI) en gecombineerd (beide typen in één bericht).
  • FCM in Android werkt via FirebaseMessagingService met eigen verbinding, en in iOS gebruikt het APNs als transport met token-onderschepping via MessagingDelegate.
  • HTTP v1 API wordt aanbevolen voor server-side verzending met OAuth 2.0-authenticatie via Service Account en ondersteuning voor leveringsanalyse.
  • Onderwerpen maken het mogelijk berichten naar abonneegroepen te sturen, en voorwaarden (conditions) maken het mogelijk meerdere onderwerpen te combineren voor precieze segmentatie.
  • FCM is gratis zonder limiet op het aantal berichten, met offline berichtopslag tot 28 dagen en een maximale payload-grootte van 4 KB.

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.

Bespreek het project

Lees ook