Das Themenabonnement ist ein Mechanismus von Firebase Cloud Messaging, der es ermöglicht, Geräte nach Interessen zu gruppieren und Benachrichtigungen an ganze Abonnentenkategorien zu senden. Anstatt an Tausende einzelner Registration Tokens zu senden, reicht es aus, eine Nachricht an ein Thema zu senden. Laut Firebase, 2025 wird das Themenabonnement in Nachrichten-Apps, Sportübertragungen und Marketingkampagnen für die massenhafte Zustellung von Benachrichtigungen verwendet.
Wichtige Punkte
Ein Themenabonnement ist ein Mechanismus zur Gruppen-Zustellung von Push-Benachrichtigungen, bei dem Geräte benannte Kanäle (Themen) abonnieren und Nachrichten erhalten, die an diese Kanäle gesendet werden. Jedes Thema wird durch einen String-Namen identifiziert, wie news_sports oder weather_alerts.
Wenn ein Gerät ein Thema abonniert, fügt FCM seinen Registration Token zur Empfängerliste dieses Themas hinzu. Beim Senden einer Nachricht an das Thema leitet FCM automatisch eine Kopie an jedes abonnierte Gerät weiter. Firebase begrenzt die Anzahl der Abonnements pro Gerät nicht — eine App kann einen Benutzer gleichzeitig für Dutzende von Themen anmelden.
Der Hauptvorteil von Themen ist die Skalierbarkeit. Um eine Benachrichtigung an eine Million Benutzer zu senden, ist nur eine HTTP-Anfrage an FCM mit dem Themennamen erforderlich. Beim Einzelversand wären eine Million Anfragen oder ein Batch-Versand von bis zu 500 Token auf einmal nötig. Themen vereinfachen auch die serverseitige Logik — es müssen keine Token-Listen für jede Kategorie gespeichert werden.
| Parameter | Einzelversand | Themenabonnement |
|---|---|---|
| Anzahl der Anfragen | Eine pro Token oder Batch bis 500 | Eine pro Thema |
| Abonnementverwaltung | Auf dem Server (Token-Liste) | Auf Client oder Server |
| Dynamische Gruppen | Erfordern Listenaktualisierung | Automatisch via Abonnement |
| Empfängerlimit | Bis zu 500 pro Anfrage | Unbegrenzt |
Das Themenabonnement wird häufig in Nachrichten-Apps zur Kategorisierung von Inhalten verwendet — das Abonnieren der Themen „Sport“, „Politik“, „Technologie“ ermöglicht die Zustellung relevanter Benachrichtigungen. Im E-Commerce werden Themen für Benachrichtigungen über Rabatte in bestimmten Produktkategorien genutzt. In Messengern und sozialen Netzwerken werden Themen für Benachrichtigungen über Ereignisse in Gruppen verwendet.
Firebase legt Beschränkungen für die Arbeit mit Themen fest. Eine einzelne App kann bis zu 2000 Themen haben. Jedes Gerät kann maximal 2000 Themen abonnieren. Auch die Häufigkeit von Abonnement-/Kündigungsvorgängen ist begrenzt — maximal 3000 Operationen pro Minute pro Projekt. Das Überschreiten dieser Grenzen führt zu einer vorübergehenden Sperrung. Für Projekte mit einer großen Anzahl von Themen wird empfohlen, Bedingungen anstelle von Themen zu verwenden — FCM unterstützt logische Ausdrücke für das Targeting.
Der Prozess des Themenabonnements besteht aus drei Phasen: Initialisierung des Abonnements auf dem Client, Registrierung in der FCM-Infrastruktur und Bestätigung des Vorgangs. Nach erfolgreichem Abonnement beginnt das Gerät, Nachrichten zu empfangen, die an dieses Thema gesendet werden.
Wenn der Client die Methode subscribeToTopic() aufruft, sendet das Firebase SDK eine Anfrage an die FCM-Server. Der Server überprüft die Gültigkeit des Vorgangs und fügt den Geräte-Token zur Abonnentenliste des Themas hinzu. FCM sendet dem Client eine Bestätigung des erfolgreichen Abonnements. Ab diesem Zeitpunkt werden alle Nachrichten an dieses Thema an das Gerät zugestellt.
Ein Thema muss nicht vorab in der Firebase-Konsole erstellt werden. Wenn das erste Gerät ein Thema mit dem Namen news_promo abonniert, erstellt FCM es automatisch. Wenn das letzte Gerät kündigt, bleibt das Thema im System, jedoch inaktiv, und nimmt den Betrieb bei einem neuen Abonnement wieder auf.
Auf Android erfolgt das Abonnieren und Kündigen von Themen über das FirebaseMessaging SDK. Die Methoden subscribeToTopic() und unsubscribeFromTopic() akzeptieren den Themennamen als Parameter. Die Operationen sind asynchron und erfordern eine Ergebnisverarbeitung.
Zum Abonnieren genügt es, subscribeToTopic() mit dem Namen des gewünschten Themas aufzurufen. Das Firebase SDK verwaltet Netzwerkanfragen und Wiederholungsversuche bei Fehlern automatisch. Es wird empfohlen, Themen nach erfolgreichem Erhalt eines Registration Tokens zu abonnieren.
class TopicSubscriber(private val context: Context) {
fun subscribeToNewsTopic() {
FirebaseMessaging.getInstance()
.subscribeToTopic("news_latest")
.addOnCompleteListener { task ->
val msg = if (task.isSuccessful) {
"Subscribed to news topic"
} else {
"Subscription failed"
}
Log.d("FCM", msg)
}
}
fun unsubscribeFromNewsTopic() {
FirebaseMessaging.getInstance()
.unsubscribeFromTopic("news_latest")
.addOnCompleteListener { task ->
Log.d("FCM", "Gekündigt: ${task.isSuccessful}")
}
}
}
In realen Apps kann ein Benutzer mehrere Kategorien abonnieren. Für eine bequeme Verwaltung erstellen Sie eine Manager-Klasse, die den Abonnementstatus mit dem Server synchronisiert. Wenn ein Benutzer sich anmeldet, stellen Sie seine Abonnements aus dem Profil wieder her.
class SubscriptionManager(private val context: Context) {
private val fcm = FirebaseMessaging.getInstance()
suspend fun syncSubscriptions(topics: List<String>) {
topics.forEach { topic ->
fcm.subscribeToTopic(topic).await()
}
}
suspend fun removeAllSubscriptions() {
val savedTopics = getSavedTopics()
savedTopics.forEach { topic ->
fcm.unsubscribeFromTopic(topic).await()
}
}
private fun getSavedTopics(): List<String> {
return listOf("news_latest", "promotions", "updates")
}
}
Auf iOS ist der Prozess des Themenabonnements logisch identisch mit Android, verwendet aber die Swift Firebase Messaging API. Die Methoden subscribe und unsubscribe werden auf der Messaging-Instanz aufgerufen und sind ebenfalls asynchron.
Um ein Thema in einer iOS-App zu abonnieren, verwenden Sie die Methode Messaging.subscribe(). Es ist wichtig, das Abonnement nach der Firebase-Initialisierung und dem Erhalt des Registration Tokens aufzurufen. Apple empfiehlt, vor dem Abonnieren von Themen die Benachrichtigungsberechtigung anzufordern.
import FirebaseMessaging
class PushTopicManager {
func subscribeToTopic(topic: String) {
Messaging.messaging().subscribe(toTopic: topic) { error in
if let error = error {
Log.e("FCM", "Abonnementfehler: \(error)")
} else {
Log.d("FCM", "Abonniert unter \(topic)")
}
}
}
func unsubscribeFromTopic(topic: String) {
Messaging.messaging().unsubscribe(fromTopic: topic) { error in
if let error = error {
Log.e("FCM", "Kündigungsfehler: \(error)")
}
}
}
}
Auf iOS ist das Themenabonnement ebenfalls an den Registration Token gebunden, den Firebase von APNs erhält. Wenn sich der APNs-Token ändert (z.B. nach einer Gerätewiederherstellung), überträgt Firebase die Abonnements automatisch auf den neuen Token. In seltenen Fällen kann jedoch eine erneute Abonnierung nach einer Aktualisierung des Registration Tokens erforderlich sein.
Die serverseitige Verwaltung von Abonnements ermöglicht das Abonnieren und Kündigen von Geräten ohne Einbeziehung der Client-App. Dies ist nützlich für Administration, A/B-Tests und die Verwaltung von Abonnements auf der Backend-Seite.
Firebase bietet eine REST-API zur Massenverwaltung von Abonnements. Der Endpunkt /v1/projects/{project_id}/subscriptions ermöglicht das Abonnieren von bis zu 1000 Geräten in einer einzigen Anfrage. Die API verwendet die Registration Tokens der Geräte zur Identifikation.
const admin = require("firebase-admin")
async function subscribeUsersToTopic(tokens, topic) {
try {
const response = await admin
.messaging()
.subscribeToTopic(tokens, topic)
Log.info(`Success: ${response.successCount}`)
Log.info(`Failures: ${response.failureCount}`)
} catch (error) {
Log.error("Abonnementfehler", error)
}
}
Die serverseitige Abonnementverwaltung wird in mehreren Szenarien eingesetzt. Bei der Registrierung eines Benutzers abonniert der Server ihn automatisch für Basisthemen. Wenn sich die Präferenzen in der Webversion ändern, synchronisiert der Server die Abonnements auf dem mobilen Gerät. Administratoren können Testgeräte für interne Themen zu Debugging-Zwecken abonnieren. Für Massenoperationen bietet FCM die Instance Group-Methode, die die Verwaltung von Abonnements einer Gerätegruppe über eine einzige Gruppenkennung ermöglicht.
Firebase bietet keine integrierte API zur Überprüfung der aktuellen Abonnements eines Geräts. Entwicklern wird empfohlen, eine eigene Abonnementdatenbank auf der Serverseite zu führen. Bei jedem App-Start synchronisiert der Client seine Abonnements mit dem Server, indem er die Liste der aktiven Themen sendet. Dies hilft, Desynchronisation zu erkennen und Abonnements bei Bedarf wiederherzustellen. Für Audits verwenden Sie die Logs von Firebase Cloud Functions — jeder subscribe/unsubscribe-Vorgang kann protokolliert werden.
Häufig gestellte Fragen
Die maximale Anzahl von Themen beträgt 2000 pro App. Wenn Sie mehr benötigen, ziehen Sie die Verwendung von Gerätegruppen oder den Einzelversand per Token in Betracht.
Firebase bietet keine direkte API zum Abrufen der Abonnementliste eines Geräts. Entwicklern wird empfohlen, den Abonnementstatus auf ihrem eigenen Server zu speichern und mit dem Client zu synchronisieren.
FCM gibt ein erfolgreiches Ergebnis zurück. Firebase behandelt die Kündigung eines nicht existierenden Themas als No-op-Operation — es werden keine Fehler erzeugt, der Status ändert sich nicht.
Ja, in der Firebase-Konsole im Bereich Cloud Messaging können Sie ein Thema als Zielgruppe auswählen und über die Weboberfläche eine Test- oder Produktionsbenachrichtigung senden.
Normalerweise wird das Abonnement innerhalb weniger Sekunden aktiviert. In seltenen Fällen kann die Verzögerung aufgrund der Verteilung über die FCM-Server jedoch 30–60 Sekunden betragen.
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