Sie können eine Client-App entweder vom Server oder vom Client aus für ein Thema abonnieren:
Auf dem Server mit dem Firebase Admin SDK
Auf dem Client mit der clientseitigen API in Ihrer App
Themenabos mit dem Admin SDK verwalten
Das Firebase Admin SDK ermöglicht Ihnen die Ausführung grundlegender Aufgaben zur Themenverwaltung serverseitig. Anhand der Registrierungstokens können Sie Client-App-Instanzen mithilfe der Serverlogik im Bulk abonnieren und abbestellen.
Sie können Client-App-Instanzen für jedes vorhandene Thema abonnieren oder ein neues Thema erstellen. Wenn Sie die API verwenden, um eine Client-App für ein neues Thema zu abonnieren (ein Thema, das für Ihr Firebase-Projekt noch nicht vorhanden ist), wird in FCM ein neues Thema mit diesem Namen erstellt. Jeder Client kann es dann abonnieren.
Sie können eine Liste von Registrierungstokens an die Firebase Admin SDK Abomethode übergeben, um die entsprechenden Geräte für ein Thema zu abonnieren:
Node.js
// These registration tokens come from the client FCM SDKs.
const registrationTokens = [
'YOUR_REGISTRATION_TOKEN_1',
// ...
'YOUR_REGISTRATION_TOKEN_n'
];
// Subscribe the devices corresponding to the registration tokens to the
// topic.
getMessaging().subscribeToTopic(registrationTokens, topic)
.then((response) => {
// See the MessagingTopicManagementResponse reference documentation
// for the contents of response.
console.log('Successfully subscribed to topic:', response);
})
.catch((error) => {
console.log('Error subscribing to topic:', error);
});
Java
// These registration tokens come from the client FCM SDKs.
List<String> registrationTokens = Arrays.asList(
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n"
);
// Subscribe the devices corresponding to the registration tokens to the
// topic.
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
System.out.println(response.getSuccessCount() + " tokens were subscribed successfully");
Python
# These registration tokens come from the client FCM SDKs.
registration_tokens = [
'YOUR_REGISTRATION_TOKEN_1',
# ...
'YOUR_REGISTRATION_TOKEN_n',
]
# Subscribe the devices corresponding to the registration tokens to the
# topic.
response = messaging.subscribe_to_topic(registration_tokens, topic)
# See the TopicManagementResponse reference documentation
# for the contents of response.
print(response.success_count, 'tokens were subscribed successfully')
Go
// These registration tokens come from the client FCM SDKs.
registrationTokens := []string{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
}
// Subscribe the devices corresponding to the registration tokens to the
// topic.
response, err := client.SubscribeToTopic(ctx, registrationTokens, topic)
if err != nil {
log.Fatalln(err)
}
// See the TopicManagementResponse reference documentation
// for the contents of response.
fmt.Println(response.SuccessCount, "tokens were subscribed successfully")
C#
// These registration tokens come from the client FCM SDKs.
var registrationTokens = new List<string>()
{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
};
// Subscribe the devices corresponding to the registration tokens to the
// topic
var response = await FirebaseMessaging.DefaultInstance.SubscribeToTopicAsync(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
Console.WriteLine($"{response.SuccessCount} tokens were subscribed successfully");
Mit dem Firebase Admin SDK können Sie Geräte auch von einem Thema abmelden indem Sie Registrierungstokens an die entsprechende Methode übergeben:
Node.js
// These registration tokens come from the client FCM SDKs.
const registrationTokens = [
'YOUR_REGISTRATION_TOKEN_1',
// ...
'YOUR_REGISTRATION_TOKEN_n'
];
// Unsubscribe the devices corresponding to the registration tokens from
// the topic.
getMessaging().unsubscribeFromTopic(registrationTokens, topic)
.then((response) => {
// See the MessagingTopicManagementResponse reference documentation
// for the contents of response.
console.log('Successfully unsubscribed from topic:', response);
})
.catch((error) => {
console.log('Error unsubscribing from topic:', error);
});
Java
// These registration tokens come from the client FCM SDKs.
List<String> registrationTokens = Arrays.asList(
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n"
);
// Unsubscribe the devices corresponding to the registration tokens from
// the topic.
TopicManagementResponse response = FirebaseMessaging.getInstance().unsubscribeFromTopic(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
System.out.println(response.getSuccessCount() + " tokens were unsubscribed successfully");
Python
# These registration tokens come from the client FCM SDKs.
registration_tokens = [
'YOUR_REGISTRATION_TOKEN_1',
# ...
'YOUR_REGISTRATION_TOKEN_n',
]
# Unubscribe the devices corresponding to the registration tokens from the
# topic.
response = messaging.unsubscribe_from_topic(registration_tokens, topic)
# See the TopicManagementResponse reference documentation
# for the contents of response.
print(response.success_count, 'tokens were unsubscribed successfully')
Go
// These registration tokens come from the client FCM SDKs.
registrationTokens := []string{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
}
// Unsubscribe the devices corresponding to the registration tokens from
// the topic.
response, err := client.UnsubscribeFromTopic(ctx, registrationTokens, topic)
if err != nil {
log.Fatalln(err)
}
// See the TopicManagementResponse reference documentation
// for the contents of response.
fmt.Println(response.SuccessCount, "tokens were unsubscribed successfully")
C#
// These registration tokens come from the client FCM SDKs.
var registrationTokens = new List<string>()
{
"YOUR_REGISTRATION_TOKEN_1",
// ...
"YOUR_REGISTRATION_TOKEN_n",
};
// Unsubscribe the devices corresponding to the registration tokens from the
// topic
var response = await FirebaseMessaging.DefaultInstance.UnsubscribeFromTopicAsync(
registrationTokens, topic);
// See the TopicManagementResponse reference documentation
// for the contents of response.
Console.WriteLine($"{response.SuccessCount} tokens were unsubscribed successfully");
Die Methoden subscribeToTopic() und unsubscribeFromTopic() führen zu einem
Objekt mit der Antwort von FCM. Der Rückgabetyp hat unabhängig von der Anzahl der in der Anfrage angegebenen Registrierungstokens dasselbe Format.
Bei einem Fehler (z. B. Authentifizierungsfehler, ungültiges Token oder Thema) führen diese Methoden zu einem Fehler. Eine vollständige Liste der Fehlercodes mit Beschreibungen und Schritten zur Fehlerbehebung finden Sie unter Firebase Admin SDK Fehler.
Themenabos über Ihre Client-App verwalten
Client-App-Instanzen können auch direkt über Ihre App mit den Firebase SDKs für Themen abonniert oder abbestellt werden. Beachten Sie, dass FCM Wiederholungen ausführt, falls anfängliche Fehler auftreten, um sicherzustellen, dass das Abo erfolgreich ist.
Wählen Sie Ihre Plattform aus:
Android
Client-Apps können jedes vorhandene Thema abonnieren oder ein neues Thema erstellen. Wenn eine Client-App einen neuen Themennamen abonniert (einen Namen, der für Ihr Firebase-Projekt noch nicht vorhanden ist), wird in FCM ein neues Thema mit diesem Namen erstellt. Jeder Client kann es dann abonnieren.
Um ein Thema zu abonnieren, ruft die Client-App Firebase Cloud Messaging
subscribeToTopic() mit dem FCM Themennamen auf. Diese Methode
gibt eine Task zurück, mit der ein Abschlusslistener ermitteln kann, ob
das Abo erfolgreich war:
Kotlin
Firebase.messaging.subscribeToTopic("weather") .addOnCompleteListener { task -> var msg = "Subscribed" if (!task.isSuccessful) { msg = "Subscribe failed" } Log.d(TAG, msg) Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show() }
Java
FirebaseMessaging.getInstance().subscribeToTopic("weather") .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { String msg = "Subscribed"; if (!task.isSuccessful()) { msg = "Subscribe failed"; } Log.d(TAG, msg); Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show(); } });
Um das Abo zu beenden, ruft die Client-App Firebase Cloud Messaging unsubscribeFromTopic()
mit dem Themennamen auf.
iOS
Client-Apps können jedes vorhandene Thema abonnieren oder ein neues Thema erstellen. Wenn eine Client-App einen neuen Themennamen abonniert (einen Namen, der für Ihr Firebase-Projekt noch nicht vorhanden ist), wird in FCM ein neues Thema mit diesem Namen erstellt. Jeder Client kann es dann abonnieren.
Rufen Sie die Abomethode im Hauptthread Ihrer Anwendung auf, um ein Thema zu abonnieren (FCM ist nicht threadsicher). Wenn die Aboanfrage anfänglich fehlschlägt, werden von FCM automatisch Wiederholungen ausgeführt. Wenn das Abo nicht abgeschlossen werden kann, wird ein Fehler ausgelöst, den Sie wie unten gezeigt in einem Abschluss-Handler abfangen können:
Swift
Messaging.messaging().subscribe(toTopic: "weather") { error in
print("Subscribed to weather topic")
}Objective-C
[[FIRMessaging messaging] subscribeToTopic:@"weather" completion:^(NSError * _Nullable error) { NSLog(@"Subscribed to weather topic"); }];
Mit diesem Aufruf wird eine
asynchrone Anfrage an das FCM Back-End gesendet und der Client für
das angegebene Thema abonniert. Bevor Sie subscribeToTopic:topic aufrufen, muss die
Client-App-Instanz bereits ein Registrierungstoken über den
Callback didReceiveRegistrationToken erhalten haben.
Jedes Mal, wenn die App gestartet wird,
FCM prüft, ob alle angeforderten Themen abonniert wurden. Um das Abo zu beenden, rufen Sie unsubscribeFromTopic:topic auf. FCM beendet das Abo dann im Hintergrund.
C++
Rufen Sie ::firebase::messaging::Subscribe
in Ihrer Anwendung auf, um ein Thema zu abonnieren. Mit diesem Aufruf wird eine asynchrone Anfrage an das FCM
Back-End gesendet und der Client für das angegebene Thema abonniert.
::firebase::messaging::Subscribe("example");
Wenn die Aboanfrage anfänglich fehlschlägt, werden von FCM Wiederholungen ausgeführt, bis das Abo erfolgreich ist. Jedes Mal, wenn die App gestartet wird, FCM prüft, ob alle angeforderten Themen abonniert wurden.
Um das Abo zu beenden, rufen Sie ::firebase::messaging::Unsubscribe auf.
beendet das Abo dann im Hintergrund.FCM
Einheit
Rufen Sie
Firebase.Messaging.FirebaseMessaging.Subscribe
in Ihrer Anwendung auf, um ein Thema zu abonnieren. Mit diesem Aufruf wird eine asynchrone Anfrage an das FCM
Back-End gesendet und der Client für das angegebene Thema abonniert.
Firebase.Messaging.FirebaseMessaging.Subscribe("/topics/example");
Wenn die Aboanfrage anfänglich fehlschlägt, werden von FCM Wiederholungen ausgeführt, bis das Abo erfolgreich ist. Jedes Mal, wenn die App gestartet wird, FCM prüft, ob alle angeforderten Themen abonniert wurden.
Um das Abo zu beenden, rufen Sie
Firebase.Messaging.FirebaseMessaging.Unsubscribe,
auf. FCM beendet das Abo dann im Hintergrund.
Legacy-Themenverwaltung auf Serverseite (eingestellt)
Informationen zu Instanz-IDs finden Sie auf der Seite Instanz-ID. Details zu den eingestellten Endpunkten finden Sie in den API-Referenzen für Instanz-IDs.