Vous pouvez abonner une application cliente à un thème depuis le serveur ou le client :
Sur le serveur, à l'aide du Firebase Admin SDK.
Sur le client, à l'aide de l'API côté client dans votre application.
Gérer les abonnements aux thèmes à l'aide du SDK Admin
Le Firebase Admin SDK vous permet d'effectuer des tâches de gestion de base des thèmes côté serveur. À l'aide de leurs jetons d'enregistrement , vous pouvez abonner et désabonner des instances d'application cliente en bloc à l'aide de la logique du serveur.
Vous pouvez abonner des instances d'application cliente à n'importe quel thème existant ou en créer un. Lorsque vous utilisez l'API pour abonner une application cliente à un nouveau thème (qui n'existe pas encore pour votre projet Firebase), un thème portant ce nom est créé dans FCM, et n'importe quel client peut ensuite s'y abonner.
Vous pouvez transmettre une liste de jetons d'enregistrement à la méthode d'abonnement Firebase Admin SDK pour abonner les appareils correspondants à un thème :
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");
Le Firebase Admin SDK vous permet également de désabonner des appareils d'un thème en transmettant des jetons d'enregistrement à la méthode appropriée :
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");
Les méthodes subscribeToTopic() et unsubscribeFromTopic() génèrent un
objet contenant la réponse de FCM. Le type de retour a le même
format, quel que soit le nombre de jetons d'enregistrement spécifiés dans la
requête.
En cas d'erreur (échec d'authentification, jeton ou thème non valide, etc.) ces méthodes génèrent une erreur. Pour obtenir la liste complète des codes d'erreur, y compris les descriptions et les étapes de résolution, consultez Firebase Admin SDK Erreurs.
Gérer les abonnements aux thèmes depuis votre application cliente
Les instances d'application cliente peuvent également être abonnées ou désabonnées à des thèmes directement depuis votre application via les SDK Firebase. Notez que FCM effectue des nouvelles tentatives en cas d'échec initial pour s'assurer que l'abonnement est réussi.
Choisissez votre plate-forme :
Android
Les applications clientes peuvent s'abonner à n'importe quel thème existant ou en créer un. Lorsqu'une application cliente s'abonne à un nouveau nom de thème (qui n'existe pas encore pour votre projet Firebase), un thème portant ce nom est créé dans FCM et n'importe quel client peut ensuite s'y abonner.
Pour s'abonner à un thème, l'application cliente appelle Firebase Cloud Messaging
subscribeToTopic() avec le nom du thème FCM. Cette méthode
renvoie un Task, qui peut être utilisé par un écouteur de finalisation pour déterminer si
l'abonnement a réussi :
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(); } });
Pour se désabonner, l'application cliente appelle Firebase Cloud Messaging unsubscribeFromTopic()
avec le nom du thème.
iOS
Les applications clientes peuvent s'abonner à n'importe quel thème existant ou en créer un. Lorsqu'une application cliente s'abonne à un nouveau nom de thème (qui n'existe pas encore pour votre projet Firebase), un thème portant ce nom est créé dans FCM et n'importe quel client peut ensuite s'y abonner.
Pour vous abonner à un thème, appelez la méthode d'abonnement à partir du thread principal de votre application (FCM n'est pas thread-safe). Si la requête d'abonnement échoue initialement, FCM effectue automatiquement de nouvelles tentatives. Dans les cas où l'abonnement ne peut pas être finalisé, il génère une erreur que vous pouvez intercepter dans un gestionnaire de finalisation, comme indiqué ci-dessous :
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"); }];
Cet appel effectue une
requête asynchrone auprès du FCM backend et abonne le client au
thème donné. Avant d'appeler subscribeToTopic:topic, assurez-vous que l'
instance d'application cliente a déjà reçu un jeton d'enregistrement via le
rappel didReceiveRegistrationToken.
Chaque fois que l'application démarre,
FCM s'assure que tous les thèmes demandés ont été abonnés. Pour
vous désabonner, appelez unsubscribeFromTopic:topic,
et FCM se désabonne du thème en arrière-plan.
C++
Pour vous abonner à un thème, appelez ::firebase::messaging::Subscribe
depuis votre application. Cela effectue une requête asynchrone auprès du FCM
backend et abonne le client au thème donné.
::firebase::messaging::Subscribe("example");
Si la requête d'abonnement échoue initialement, FCM effectue de nouvelles tentatives jusqu' à ce qu'il puisse s'abonner au thème. Chaque fois que l'application démarre, FCM s'assure que tous les thèmes demandés ont été abonnés.
Pour vous désabonner, appelez ::firebase::messaging::Unsubscribe,
et FCM se désabonne du thème en arrière-plan.
Unity
Pour vous abonner à un thème, appelez
Firebase.Messaging.FirebaseMessaging.Subscribe
depuis votre application. Cela effectue une requête asynchrone auprès du FCM
backend et abonne le client au thème donné.
Firebase.Messaging.FirebaseMessaging.Subscribe("/topics/example");
Si la requête d'abonnement échoue initialement, FCM effectue de nouvelles tentatives jusqu' à ce qu'il puisse s'abonner au thème. Chaque fois que l'application démarre, FCM s'assure que tous les thèmes demandés ont été abonnés.
Pour vous désabonner, appelez
Firebase.Messaging.FirebaseMessaging.Unsubscribe,
et FCM se désabonne du thème en arrière-plan.
Gestion des thèmes côté serveur (ancienne version, abandonnée)
Pour comprendre ce que sont les ID d'instance, consultez la page ID d'instance. Pour en savoir plus sur les points de terminaison abandonnés, consultez la documentation de référence de l'API ID d'instance.