Firebase Cloud Messaging (FCM) ist ein plattformübergreifender Dienst von Google für die Zustellung von Push-Benachrichtigungen und Nachrichten, der für mobile und Webanwendungen entwickelt wurde. FCM gewährleistet eine zuverlässige Datenübertragung zwischen Server und Client-Geräten, ohne dass eine dauerhafte Netzwerkverbindung aufrechterhalten werden muss. Laut Firebase Documentation, 2026 werden täglich mehr als 300 Milliarden Nachrichten weltweit über die FCM-Infrastruktur gesendet. Der Dienst unterstützt sowohl Benachrichtigungen mit automatischer Anzeige als auch Data-Nachrichten für die Übertragung von Daten im Hintergrund.
Wichtige Punkte
Firebase Cloud Messaging ist ein Cloud-Dienst von Google, der die Zustellung von Push-Benachrichtigungen und Data-Nachrichten zwischen dem Anwendungsserver und Client-Geräten gewährleistet. Der Dienst hat das alte Google Cloud Messaging (GCM) ersetzt und ist zur Standardlösung für die Push-Zustellung im Firebase-Ökosystem geworden. FCM unterstützt Android, iOS, Web und Unity und bietet eine einheitliche Sendeschnittstelle unabhängig von der Zielplattform.
Der Dienst bietet mehrere Mechanismen zur Nachrichtenzustellung, die jeweils eine bestimmte Aufgabe lösen. Notification-Nachrichten werden beim Empfang automatisch vom System angezeigt — der Entwickler muss keinen Code schreiben, um die Benachrichtigung anzuzeigen. Data-Nachrichten übertragen beliebige Nutzlasten als Schlüssel-Wert-Paare und werden innerhalb der Anwendung verarbeitet. Kombinierte Nachrichten enthalten sowohl sichtbare als auch versteckte Teile für maximale Flexibilität.
Die Implementierung eines eigenen Push-Servers erfordert die Aufrechterhaltung einer ständigen TCP-Verbindung zu jedem Gerät, was ineffizient und unsicher ist. FCM nutzt die einheitliche Infrastruktur von Google, die Verbindungen zu Milliarden von Geräten gleichzeitig aufrechterhält. Der Dienst verwaltet automatisch Zustellungswiederholungen, Nachrichtenwarteschlangen und Lastausgleich und befreit den Entwickler davon, diese Aufgaben selbst lösen zu müssen.
Die FCM-Architektur besteht aus drei Hauptkomponenten: dem Anbieterserver (Ihr Backend), dem Firebase Cloud Messaging-Server und der Client-Anwendung auf dem Gerät. Wenn der Server eine Nachricht sendet, erreicht sie zunächst die FCM-Infrastruktur, die sie an das Zielgerät weiterleitet. Ist das Gerät offline, speichert FCM die Nachricht in einer Warteschlange und stellt sie bei Wiederherstellung der Verbindung zu.
Beim ersten Start ruft die Anwendung das Firebase SDK auf, das das Gerät im FCM-Dienst registriert und ein eindeutiges Registration Token erhält. Dieses Token ist eine Zeichenfolge von etwa 150 Zeichen und identifiziert eine bestimmte Anwendungsinstanz auf einem bestimmten Gerät. Das Token kann sich bei Neuinstallation der Anwendung, Datenlöschung oder Wiederherstellung aus einem Backup ändern — der Entwickler muss Token-Aktualisierungen über den onNewToken-Delegaten behandeln.
Wenn der Server eine Anfrage über die FCM-API sendet, durchläuft die Nachricht mehrere Phasen. Empfang und Validierung — FCM prüft die Korrektheit der Anfrage und die Existenz des Zielgeräts. Warteschlange — ist das Gerät nicht verfügbar, gelangt die Nachricht in eine Speicherwarteschlange. Routing — FCM bestimmt den optimalen Zustellungskanal (WLAN oder Mobilfunkdaten). Zustellung — das System übermittelt die Nachricht an die Zielanwendung. Nach erfolgreicher Zustellung gibt FCM eine Nachrichten-ID an den Server zurück.
Firebase Cloud Messaging unterstützt drei Nachrichtentypen, von denen jeder seine eigenen Verarbeitungsmerkmale auf der Client-Seite hat. Notification-Nachrichten werden vom Systemdienst Google Play Services auf Android und APNs auf iOS verarbeitet und automatisch als Push-Banner angezeigt. Data-Nachrichten werden direkt an die Anwendung zugestellt und über den onMessageReceived-Callback auf Android und application(_:didReceiveRemoteNotification:) auf iOS verarbeitet.
Eine Notification-Nachricht enthält vordefinierte Felder: Titel, Text, Bild-URL und Benachrichtigungston. Das System erstellt und zeigt die Benachrichtigung automatisch in der Systemablage an, selbst wenn die Anwendung im Hintergrund oder beendet ist. Der Benutzer sieht ein Standard-Banner mit Titel und Text und beim Antippen öffnet sich die Anwendung mit den im Payload gesendeten Daten. Ist die Anwendung aktiv, kann die Notification-Nachricht abgefangen und im Code verarbeitet werden.
Eine Data-Nachricht ist ein benutzerdefinierter Satz von Schlüssel-Wert-Paaren ohne vordefinierte Felder. Der Payload wird nicht automatisch vom System verarbeitet — die Anwendung erhält Rohdaten und kann sie beliebig interpretieren. Data-Nachrichten werden für die Datensynchronisation im Hintergrund, Aktualisierung des lokalen Caches, Synchronisationsauslöser oder zum Senden von Befehlen ohne Anzeige einer Benachrichtigung verwendet. Auf Android werden Data-Nachrichten immer zugestellt, auch wenn die Anwendung beendet oder im Hintergrund ist.
FCM ermöglicht das Senden einer Nachricht, die sowohl einen Notification-Teil (zur Anzeige) als auch einen Data-Teil (zur Verarbeitung) enthält. Der kombinierte Payload umfasst sowohl die vordefinierten Notification-Felder als auch beliebige Data-Schlüssel. Das System zeigt die Benachrichtigung aus dem Notification-Teil an, während der Data-Teil beim Öffnen an die Intent-Extras der Anwendung übergeben wird. Dies ist nützlich für Szenarien, in denen dem Benutzer eine Benachrichtigung angezeigt und gleichzeitig ein Kontext zum Navigieren zu einem bestimmten Bildschirm übergeben werden muss.
| Typ | Auto-Anzeige | Hintergrundverarbeitung | Beispiel |
|---|---|---|---|
| Notification | Ja, durch System | Automatisch, ohne Code | Willkommens-Push-Benachrichtigung |
| Data | Nein | Über Anwendungs-Callback | Daten-Synchronisation im Hintergrund |
| Kombiniert | Ja, Notification-Teil | Data-Teil beim Öffnen | Benachrichtigung + Bestelllink |
Die Integration von FCM in Android beginnt mit der Verbindung des Firebase SDK über die build.gradle-Datei auf Anwendungsebene. Nach dem Hinzufügen der Abhängigkeiten und der google-services.json-Datei erhält die Anwendung automatisch ein Registration Token, das über den FirebaseMessagingService-Callback übergeben wird. Zum Empfangen von Benachrichtigungen muss ein Dienst erstellt werden, der FirebaseMessagingService erweitert und in AndroidManifest.xml registriert wird.
Nach der Verbindung des Firebase SDK wird das Geräte-Token ohne zusätzlichen Code automatisch generiert. Das Token ist verfügbar über FirebaseMessaging.getInstance().token, das ein Task<String> zurückgibt. Zur Verfolgung von Token-Aktualisierungen wird die onNewToken-Methode im Dienst überschrieben. Das Token muss an den Anbieterserver gesendet werden, damit der Server Push-Benachrichtigungen an dieses Gerät senden kann.
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Neue Nachricht"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
Der Dienst zum Empfangen von FCM-Nachrichten muss in AndroidManifest.xml mit den entsprechenden Intent-Filtern registriert werden. Fügen Sie das service-Tag mit der INTERNET-Berechtigung und der angegebenen Aktion hinzu. Ohne Dienstregistrierung werden Nachrichten nicht an die Anwendung im Hintergrund zugestellt. Zum Anzeigen von Benachrichtigungen auf Android 13+ ist die Laufzeitberechtigung POST_NOTIFICATIONS erforderlich.
<!-- 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>
Die Integration von FCM in iOS erfordert Konfiguration sowohl auf Seiten des Apple Push Notification Service (APNs) als auch in der Firebase Console. Anders als bei Android, wo FCM die Verbindung direkt verwaltet, nutzt FCM unter iOS APNs als Transportschicht. Die Anwendung registriert sich für Push-Benachrichtigungen über UIApplication.shared.registerForRemoteNotifications, und das Firebase SDK fängt das empfangene Geräte-Token ab und verknüpft es mit dem FCM Registration Token.
Damit FCM unter iOS funktioniert, muss ein APNs-Schlüssel oder ein Zertifikat in der Firebase Console hochgeladen werden. Der APNs-Schlüssel ist eine moderne Authentifizierungsmethode ohne Zertifikate (von Apple empfohlen). Der Schlüssel wird im Apple Developer Portal im Bereich Keys erstellt und in den Cloud Messaging-Einstellungen in der Firebase Console hochgeladen. Nach der APNs-Konfiguration fordert die Anwendung die Berechtigung für Benachrichtigungen über UNUserNotificationCenter an und registriert sich über 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
}
}
Zur Verarbeitung empfangener Benachrichtigungen wird der UNUserNotificationCenter-Delegat implementiert. Die willPresent-Methode wird aufgerufen, wenn eine Benachrichtigung bei aktiver Anwendung eingeht — hier kann eine benutzerdefinierte In-App-Benachrichtigung angezeigt oder das Systembanner ignoriert werden. Die didReceive-Methode wird aufgerufen, wenn der Benutzer auf die Benachrichtigung tippt — hier wird zum entsprechenden Bildschirm navigiert. Für Data-Nachrichten wird der MessagingDelegate verwendet, der den Payload beim Empfang einer FCM-Nachricht im Hintergrund erhält.
Das serverseitige Senden von FCM-Nachrichten erfolgt über die HTTP v1 API von Firebase Cloud Messaging oder die veraltete Firebase Cloud Messaging API. Die HTTP v1 API ist die empfohlene Methode, verwendet OAuth 2.0-Authentifizierung über ein Service Account und unterstützt alle modernen FCM-Funktionen, einschließlich Zustellungsanalyse und A/B-Tests von Benachrichtigungen. Die Anfrage wird per POST-Methode an den Endpunkt https://fcm.googleapis.com/v1/projects/{project_id}/messages:send gesendet.
Der Anforderungstext enthält ein JSON-Objekt mit Nachrichteninformationen: Ziel (Token, Thema oder Bedingung), Benachrichtigung (zur Anzeige) und Daten (benutzerdefinierte Nutzlast). Die Authentifizierung erfolgt über einen JSON-Schlüssel des Service Account, der in die Umgebungsvariablen des Servers geladen wird. Das Zugriffstoken wird mit der Bibliothek google-auth-library generiert. Google empfiehlt die Verwendung des Firebase Admin SDK für die automatische Authentifizierungsverwaltung und Wiederholungsversuche.
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% Rabatt", body: "Auf alle Dienstleistungen heute" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Erfolgreich gesendet:", response)
})
.catch(error => {
console.log("Sende fehler:", error)
})
Für das Senden von Benachrichtigungen an eine Gruppe von Benutzern unterstützt FCM Themenabonnements. Ein Thema (Topic) ist ein benannter Kanal, den die Client-Anwendung über FirebaseMessaging.getInstance().subscribeToTopic() abonniert. Der Server kann eine Nachricht an ein Thema senden, und sie wird an alle abonnierten Geräte zugestellt. Themen eignen sich für Newsletter, Werbebenachrichtigungen und ereignisbasierte Pushs. Für eine genauere Segmentierung werden Bedingungen auf der Grundlage mehrerer Themen mit logischen Operatoren verwendet.
Häufig gestellte Fragen
FCM funktioniert auf Android über Googles eigene Infrastruktur, während es auf iOS APNs als Transportprotokoll verwendet. FCM bietet eine einheitliche API für beide Plattformen, automatische Offline-Speicherung von Nachrichten und Zustellungsanalyse, die in reinem APNs nicht verfügbar sind.
Ja, über die Firebase Console im Bereich Cloud Messaging können Benachrichtigungen manuell an ausgewählte Geräte, Themen oder Zielgruppensegmente gesendet werden. Diese Funktion eignet sich für Tests und einmalige Sendungen, ersetzt aber nicht die Serverintegration für Produktionsanwendungen.
Abonnieren Sie Token-Aktualisierungen über onNewToken im FirebaseMessagingService (Android) oder MessagingDelegate (iOS). Wenn sich das Token ändert, senden Sie das neue Token an den Server und entfernen Sie das alte. Der Server sollte die Datenbank aktualisieren und keine Sendeversuche an das veraltete Token mehr unternehmen.
FCM speichert die Nachricht bis zu 28 Tage in einer Warteschlange und stellt sie bei Wiederherstellung der Verbindung zu. Für Notification-Nachrichten wird nur die letzte Nachricht jeder Kollapsgruppe kollabiert. Data-Nachrichten werden separat gespeichert und in der Reihenfolge des Sendens ohne Kollaps zugestellt.
FCM ist völlig kostenlos ohne Begrenzung der Nachrichtenanzahl. Die Nutzung von FCM wird weder im Spark- noch im Blaze-Tarif berechnet. Es gibt nur Grenzen für die Payload-Größe: bis zu 4 KB für Notification-Nachrichten und bis zu 2 KB für Data-Nachrichten.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch