FCM (Firebase Cloud Messaging) ist ein plattformübergreifender Dienst von Google zur Zustellung von Push-Benachrichtigungen und zur Datenübertragung zwischen einem Server und mobilen Anwendungen. Es unterstützt Android, iOS und Web-Plattformen über eine einheitliche API. Laut der Firebase-Dokumentation verarbeitet FCM weltweit täglich über 1 Milliarde Nachrichten.
Wichtige Punkte
Firebase Cloud Messaging (FCM) ist ein Cloud-Dienst von Google, der die zuverlässige Zustellung von Push-Benachrichtigungen und Datenmeldungen an mobile Geräte gewährleistet. Früher als Google Cloud Messaging (GCM) bekannt, ist FCM zum primären Werkzeug für plattformübergreifende Benachrichtigungen im Firebase-Ökosystem geworden.
FCM wählt automatisch den optimalen Zustellungskanal je nach Plattform aus: Auf Android wird die eigene FCM-Verbindung verwendet, auf iOS APNS (über das FCM-Gateway). Der Entwickler muss nicht zwei verschiedene Integrationen implementieren — FCM übernimmt das Routing.
Der Dienst bietet eine einheitliche REST-API und ein Admin-SDK zum Senden von Nachrichten. Dies ermöglicht das Senden von Benachrichtigungen von der Serverseite ohne Bindung an eine bestimmte Empfängerplattform.
FCM unterstützt mehrere Zustellungsmodi: eine einzelne Nachricht an ein bestimmtes Gerät, Gruppenübertragung nach Thema und segmentiertes Senden nach Bedingungen. Geplantes Senden und A/B-Tests von Benachrichtigungsinhalten sind ebenfalls verfügbar.
Die FCM-Architektur basiert auf drei Komponenten: der Client-Anwendung, dem Firebase Connection Server und dem App-Server. Der Client registriert sich beim Start bei FCM und erhält ein eindeutiges Registrierungstoken — eine Zeichenfolge, die das Gerät für die jeweilige Anwendung identifiziert.
Der App-Server sendet eine Anfrage an die FCM-REST-API und gibt das Empfängertoken oder Thema an. Der Firebase Connection Server stellt die Nachricht über eine dauerhafte XMPP-Verbindung oder HTTP-Anfrage zu. Wenn das Gerät offline ist, wird die Nachricht in die Warteschlange gestellt und bei Wiederherstellung der Verbindung zugestellt.
FCM garantiert die Zustellung mittels Prioritätswarteschlangen und einem Bestätigungsmechanismus. Auf Android wird die Nachricht bis zu 28 Tage in der Warteschlange gespeichert, auf iOS bis zu 4 Wochen (über APNS). Nach Ablauf der Gültigkeitsdauer wird die Nachricht ohne Benachrichtigung gelöscht.
Das Registrierungstoken kann sich in mehreren Fällen ändern: beim Wiederherstellen von App-Daten, beim Aktualisieren auf eine neue Version oder beim Löschen des Caches. Die App muss FirebaseMessagingService.onNewToken implementieren, um Token-Aktualisierungen zu verarbeiten und mit dem Server zu synchronisieren.
FCM unterstützt zwei Arten von Nutzlasten: notification und data. Jeder Typ bestimmt, wie und wann die Nachricht auf dem Empfängergerät verarbeitet wird.
| Parameter | Notification | Data |
|---|---|---|
| Automatische Anzeige | Ja, wenn die App im Hintergrund ist | Nein, nur in der App |
| Verarbeitung | System/NOS — im Hintergrund; App — im Vordergrund | Immer in der App (onMessageReceived) |
| Maximale Größe | 4 KB | 4 KB |
| Benutzerdefinierte Schlüssel | Auf vordefinierte Felder beschränkt | Beliebige Schlüssel-Wert-Paare |
| Erfordert CollapseKey | Optional | Optional zum Gruppieren |
In der Praxis wird empfohlen, data-Nachrichten zu verwenden, wenn die App eine vollständige Benachrichtigungsverarbeitung in onMessageReceived benötigt. Notification-Nachrichten eignen sich für einfache Szenarien, in denen die Systemanzeige ausreicht.
FCM und APNS sind die beiden wichtigsten Push-Zustellungsdienste. FCM fungiert als plattformübergreifendes Gateway, während APNS nur für das Apple-Ökosystem gedacht ist. Ihre Hauptunterschiede liegen in der Architektur, den Zertifikatsanforderungen und den Routing-Mechanismen.
Die Wahl zwischen FCM und direktem APNS hängt von der Projektarchitektur ab. Für plattformübergreifende Anwendungen ist FCM die optimale Wahl. Für reine iOS-Projekte ist die direkte Arbeit mit APNS über die HTTP/2-API akzeptabel.
FCM ist gerechtfertigt, wenn das Projekt sowohl Android als auch iOS gleichzeitig verwendet, sowie wenn Firebase-Analysen, A/B-Tests von Benachrichtigungen oder Themen ohne Serverlogik benötigt werden. Direktes APNS ist für reine iOS-Anwendungen mit minimalen Abhängigkeiten und strengen Latenzanforderungen vorzuziehen.
Um FCM mit einer Android-Anwendung zu verbinden, müssen Sie das Firebase SDK hinzufügen und google-services.json im Projektstamm konfigurieren. Nach der Token-Registrierung ist die Anwendung bereit, Nachrichten über FirebaseMessagingService zu empfangen.
// 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)
}
}
}
Nach der Einrichtung erhält die Anwendung beim ersten Start automatisch ein FCM-Token. Das Token muss an den App-Server gesendet werden, um später Benachrichtigungen an dieses Gerät senden zu können.
Unter Android 8+ muss vor dem Senden einer FCM-Benachrichtigung mit automatischer Anzeige ein NotificationChannel erstellt werden. FCM-Notification-Nachrichten verwenden die Standard-Kanal-ID, aber es wird empfohlen, beim Empfang der ersten Nachricht einen benutzerdefinierten Kanal über FirebaseMessagingService zu erstellen. Data-Nachrichten benötigen keinen Kanal — die App entscheidet selbst, wie und wann die Benachrichtigung angezeigt wird.
Unter iOS fungiert FCM als Vermittler zwischen dem App-Server und APNS. Firebase empfängt die Nachricht vom Server, verpackt sie im APNS-Format und sendet sie über das Apple-Gateway. Der Entwickler muss einen APNS-Schlüssel oder ein Zertifikat in der Firebase-Konsole konfigurieren.
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")
}
}
Unter iOS erfolgt die APNS-Registrierung asynchron. Das FCM SDK ruft automatisch das APNS-Token ab und übergibt es an den Firebase-Server. didReceiveRegistrationToken wird ausgelöst, wenn ein neues FCM-Token empfangen wird, das das APNS-Token mit der Projektkennung kombiniert.
FCM bietet eine Firebase-Konsole zur Überwachung der Zustellung: die Anzahl der gesendeten, empfangenen und angezeigten Benachrichtigungen. Ein Status-Callback über Firebase Cloud Functions steht ebenfalls zur Verfügung, um Zustellungsfehler auf der Serverseite zu verfolgen. Wichtige Kennzahlen: Impressionen und Öffnungen von Benachrichtigungen.
Bei der Arbeit mit FCM ist es wichtig, den richtigen Nachrichtentyp für jedes Szenario zu wählen. Für einfache Benachrichtigungen mit automatischer Anzeige verwenden Sie Notification-Nachrichten. Für Fälle, in denen die App Daten vor der Anzeige verarbeiten muss, verwenden Sie data-Nachrichten. Ein gemischter Typ (notification + data) wird nur empfohlen, wenn die Daten für Analysen benötigt werden und nicht zum Ändern des Benachrichtigungsinhalts.
Verwalten Sie Token zentral. Speichern Sie aktuelle Token auf dem Server in einer Tabelle, die mit Benutzer und Plattform verknüpft ist. Implementieren Sie einen Bereinigungsmechanismus für veraltete Token: Wenn ein NotRegistered- oder InvalidRegistration-Fehler auftritt, löschen Sie das Token aus der Datenbank. Token ändern sich selten, aber ihre Bereinigung ist ein obligatorischer Bestandteil des FCM-Supports.
Verwenden Sie CollapseKeys (collapseKey) zum Gruppieren von Nachrichten. Wenn Sie mehrere Benachrichtigungen desselben Typs senden (z.B. „Wechselkursaktualisierung“), legen Sie denselben collapseKey fest. FCM stellt nur die letzte Nachricht aus der Gruppe zu, wodurch die Geräteauslastung reduziert und eine Überflutung des Benutzers mit Benachrichtigungen vermieden wird.
Überwachen Sie die Zustellung über die Firebase-Konsole und Cloud Functions. FCM-Analysen zeigen die Anzahl der gesendeten, empfangenen und angezeigten Benachrichtigungen. Wenn die Anzeigerate unter 70 % liegt, überprüfen Sie die Kanaleinstellungen unter Android und die Berechtigungseinstellungen unter iOS. Eine niedrige Zustellrate hängt oft mit deaktivierten Kanälen oder Benachrichtigungsverboten zusammen. Fünftens: Verwenden Sie Firebase A/B-Tests, um den Benachrichtigungstext und den Sendezeitpunkt zu optimieren — dies erhöht die Öffnungsrate laut Firebase-Daten um 15–25 %.
Häufig gestellte Fragen
FCM ist die Weiterentwicklung von GCM (Google Cloud Messaging). FCM bietet eine vereinfachte Einrichtung über die Firebase-Konsole, integrierte Analysen, Themen und Web-Push-Unterstützung. GCM wurde im April 2019 offiziell eingestellt, alle Projekte müssen auf FCM migriert werden.
Firebase Cloud Messaging ist ein kostenloser Dienst ohne Begrenzung der Nachrichtenanzahl. Die Bezahlung erfolgt nur für die Nutzung anderer Firebase-Dienste wie Cloud Functions oder Firestore. FCM erfordert kein Spark- oder Blaze-Abonnement für die grundlegende Benachrichtigungszustellung.
Das FCM-Token ändert sich bei: Wiederherstellung der App aus einem Backup, Löschen der App-Daten, Neuinstallation, Update auf eine neue Version mit geänderter Sender-ID. Behandeln Sie immer onNewToken in FirebaseMessagingService, um das neue Token an den Server zu senden.
Google FCM ist in China gesperrt. Für die Zustellung von Benachrichtigungen in China werden alternative Dienste verwendet: Huawei Push Kit, MiPush (Xiaomi), Oppo Push, Vivo Push. Für die plattformübergreifende Zustellung werden Multi-Provider-Dienste wie Getui verwendet.
Verwenden Sie die integrierte Firebase-Konsole: Wählen Sie „Cloud Messaging“ — „Send Test Message“. Geben Sie ein Test-Token ein und senden Sie eine Notification-Nachricht. Die Benachrichtigung sollte auf dem Gerät erscheinen. Sie können auch die FirebaseMessagingService.onMessageReceived-Protokolle überwachen.
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