Sie können eine Client-App entweder vom Server oder vom Client aus für ein Thema abonnieren:
Auf dem Server mit Firebase Admin SDK.
Auf dem Client mit der clientseitigen API in Ihrer App.
Themenabos mit dem Admin SDK verwalten
Mit der Firebase Admin SDK können Sie grundlegende Aufgaben zur Themenverwaltung serverseitig ausführen. Anhand der Registrierungstokens können Sie Client-App-Instanzen mithilfe von Serverlogik im Bulk abonnieren und abmelden.
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 (eines, das für Ihr Firebase-Projekt noch nicht vorhanden ist), wird in FCM ein neues Thema mit diesem Namen erstellt und jeder Client kann es anschließend 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 auch die Registrierung von Geräten für ein Thema aufheben, 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, das die Antwort von FCM enthält. Der Rückgabetyp hat unabhängig von der Anzahl der im Antrag angegebenen Registrierungstokens dasselbe Format.
Im Falle eines Fehlers (Authentifizierungsfehler, ungültiges Token oder Thema usw.) 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 über die Firebase SDKs für Themen abonniert oder abgemeldet werden. FCM versucht es bei anfänglichen Fehlern noch einmal, um sicherzustellen, dass das Abo erfolgreich abgeschlossen wird.
Wählen Sie Ihre Plattform aus:
Android
Client-Apps können jedes vorhandene Thema abonnieren oder ein neues Thema erstellen. Wenn eine Client-App ein neues Thema abonniert, das noch nicht für Ihr Firebase-Projekt 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 Namen des Themas FCM auf. Diese Methode gibt ein Task
zurück, das von einem Completion-Listener verwendet werden kann, um festzustellen, 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(); } });
Zum Abmelden ruft die Client-App Firebase Cloud Messaging unsubscribeFromTopic()
mit dem Namen des Themas auf.
iOS
Client-Apps können jedes vorhandene Thema abonnieren oder ein neues Thema erstellen. Wenn eine Client-App ein neues Thema abonniert, das noch nicht für Ihr Firebase-Projekt vorhanden ist, wird in FCM ein neues Thema mit diesem Namen erstellt. Jeder Client kann es dann abonnieren.
Wenn Sie ein Thema abonnieren möchten, rufen Sie die Abo-Methode über den Hauptthread Ihrer Anwendung auf (FCM ist nicht threadsicher). Wenn die Aboanfrage anfangs fehlschlägt, wird sie von FCM automatisch wiederholt. Wenn das Abo nicht abgeschlossen werden kann, wird ein Fehler ausgegeben, den Sie in einem Completion-Handler abfangen können, wie unten gezeigt:
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-Backend gesendet und der Client wird 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.
Bei jedem Start der App prüft FCM, ob alle angeforderten Themen abonniert wurden. Wenn Sie sich abmelden möchten, rufen Sie unsubscribeFromTopic:topic
an. FCM meldet sich dann im Hintergrund vom Thema ab.
C++
Rufen Sie ::firebase::messaging::Subscribe
aus Ihrer Anwendung auf, um ein Thema zu abonnieren. Dadurch wird eine asynchrone Anfrage an das FCM-Backend gesendet und der Client wird für das angegebene Thema registriert.
::firebase::messaging::Subscribe("example");
Wenn die Aboanfrage anfangs fehlschlägt, wird sie von FCM wiederholt, bis das Abo für das Thema erfolgreich abgeschlossen werden kann. Bei jedem Start der App prüft FCM, ob alle angeforderten Themen abonniert wurden.
Wenn Sie sich abmelden möchten, rufen Sie ::firebase::messaging::Unsubscribe
an. FCM meldet Sie dann im Hintergrund vom Thema ab.
Einheit
Rufen Sie Firebase.Messaging.FirebaseMessaging.Subscribe
aus Ihrer Anwendung auf, um ein Thema zu abonnieren. Dadurch wird eine asynchrone Anfrage an das FCM-Backend gesendet und der Client wird für das angegebene Thema registriert.
Firebase.Messaging.FirebaseMessaging.Subscribe("/topics/example");
Wenn die Aboanfrage anfangs fehlschlägt, wird sie von FCM wiederholt, bis das Abo für das Thema erfolgreich abgeschlossen werden kann. Bei jedem Start der App prüft FCM, ob alle angeforderten Themen abonniert wurden.
Wenn Sie sich abmelden möchten, rufen Sie Firebase.Messaging.FirebaseMessaging.Unsubscribe
an. FCM meldet Sie dann im Hintergrund vom Thema ab.
Legacy-Themenverwaltung auf Serverseite (eingestellt)
Weitere Informationen zu Instanz-IDs finden Sie auf der Seite „Instanz-ID“. Weitere Informationen zu den eingestellten Endpunkten finden Sie in der Instance ID API-Referenz.