Firebase Cloud Messaging propose deux manières de cibler un message sur plusieurs appareils :
- Messagerie par sujet , qui vous permet d'envoyer un message à plusieurs appareils qui se sont inscrits à un sujet particulier.
- Messagerie de groupe d'appareils , qui vous permet d'envoyer un message à plusieurs appareils appartenant à un groupe que vous définissez.
Ce didacticiel se concentre sur l'envoi de messages de rubrique à partir de votre serveur d'applications à l'aide du SDK Admin ou de l'API REST pour FCM, ainsi que sur leur réception et leur traitement dans une application Android. Nous couvrirons la gestion des messages pour les applications en arrière-plan et au premier plan. Toutes les étapes pour y parvenir sont couvertes, de la configuration à la vérification.
Configurer le SDK
Cette section peut couvrir les étapes que vous avez déjà suivies si vous avez configuré une application client Android pour FCM ou suivi les étapes pour envoyer votre premier message .
Avant que tu commences
Installez ou mettez à jour Android Studio vers sa dernière version.
Assurez-vous que votre projet répond à ces exigences :
- Cibles API niveau 19 (KitKat) ou supérieur
- Utilise Android 4.4 ou supérieur
- Utilise Jetpack (AndroidX) , qui inclut le respect de ces exigences de version :
-
com.android.tools.build:gradle
v3.2.1 ou version ultérieure -
compileSdkVersion
28 ou ultérieure
-
Configurez un appareil physique ou utilisez un émulateur pour exécuter votre application.
Notez que les SDK Firebase dépendant des services Google Play nécessitent l'installation des services Google Play sur l'appareil ou l'émulateur.Connectez-vous à Firebase à l'aide de votre compte Google.
Si vous n'avez pas encore de projet Android et que vous souhaitez simplement essayer un produit Firebase, vous pouvez télécharger l'un de nos exemples de démarrage rapide .
Créer un projet Firebase
Avant de pouvoir ajouter Firebase à votre application Android, vous devez créer un projet Firebase pour vous connecter à votre application Android. Consultez Comprendre les projets Firebase pour en savoir plus sur les projets Firebase.
Enregistrez votre application auprès de Firebase
Pour utiliser Firebase dans votre application Android, vous devez enregistrer votre application avec votre projet Firebase. L'enregistrement de votre application est souvent appelé "ajouter" votre application à votre projet.
Accédez à la console Firebase .
Au centre de la page de présentation du projet, cliquez sur l'icône Android (
) ou Ajouter une application pour lancer le workflow de configuration.Entrez le nom du package de votre application dans le champ du nom du package Android .
Un nom de package identifie de manière unique votre application sur l'appareil et dans le Google Play Store.
Un nom de package est souvent appelé ID d'application .
Recherchez le nom du package de votre application dans le fichier Gradle de votre module (au niveau de l'application), généralement
app/build.gradle
(exemple de nom de package :com.yourcompany.yourproject
).Sachez que la valeur du nom du package est sensible à la casse et qu'elle ne peut pas être modifiée pour cette application Firebase Android après son enregistrement avec votre projet Firebase.
(Facultatif) Saisissez d'autres informations sur l'application : surnom de l'application et certificat de signature de débogage SHA-1 .
Pseudonyme d'application : un identifiant interne pratique qui n'est visible que par vous dans la console Firebase
Certificat de signature de débogage SHA-1 : un hachage SHA-1 est requis par Firebase Authentication (lorsque vous utilisez Google Sign In ou la connexion par numéro de téléphone ) et Firebase Dynamic Links .
Cliquez sur Enregistrer l'application .
Ajouter un fichier de configuration Firebase
Téléchargez puis ajoutez le fichier de configuration Firebase Android (
) à votre application :google-services.json Cliquez sur Télécharger google-services.json pour obtenir votre fichier de configuration Firebase Android.
Déplacez votre fichier de configuration dans le répertoire racine du module (au niveau de l'application) de votre application.
Le fichier de configuration Firebase contient des identifiants uniques mais non secrets pour votre projet. Pour en savoir plus sur ce fichier de configuration, consultez Comprendre les projets Firebase .
Vous pouvez télécharger à nouveau votre fichier de configuration Firebase à tout moment.
Assurez-vous que le nom du fichier de configuration n'est pas ajouté avec des caractères supplémentaires, comme
(2)
.
Pour rendre les valeurs de votre fichier de configuration
accessibles aux SDK Firebase, vous avez besoin du plugin Google services Gradle (google-services.json google-services
).Dans votre fichier Gradle au niveau de la racine (au niveau du projet) (
<project>/build.gradle
), ajoutez le plug-in de services Google en tant que dépendance buildscript :buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... // Add the dependency for the Google services Gradle plugin classpath 'com.google.gms:google-services:4.3.15' } } allprojects { ... repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } }
Dans le fichier Gradle de votre module (au niveau de l'application) (généralement
<project>/<app-module>/build.gradle
), ajoutez le plug-in de services Google :plugins { id 'com.android.application' // Add the Google services Gradle plugin id 'com.google.gms.google-services' ... }
Ajouter des SDK Firebase à votre application
Dans le fichier Gradle de votre module (au niveau de l'application) (généralement
<project>/<app-module>/build.gradle
), ajoutez la dépendance pour la bibliothèque Android Firebase Cloud Messaging. Nous vous recommandons d'utiliser Firebase Android BoM pour contrôler la gestion des versions de la bibliothèque.Pour une expérience optimale avec Firebase Cloud Messaging, nous vous recommandons d'activer Google Analytics dans votre projet Firebase et d'ajouter le SDK Firebase pour Google Analytics à votre application.
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.firebase:firebase-analytics' }
En utilisant Firebase Android BoM , votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
(Alternative) Ajouter des dépendances à la bibliothèque Firebase sans utiliser le BoM
Si vous choisissez de ne pas utiliser la nomenclature Firebase, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.
Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons vivement d'utiliser la BoM pour gérer les versions de bibliothèque, ce qui garantit que toutes les versions sont compatibles.
dependencies { // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging:23.1.2' implementation 'com.google.firebase:firebase-analytics:21.3.0' }
Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:32.1.0') // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' }
En utilisant Firebase Android BoM , votre application utilisera toujours des versions compatibles des bibliothèques Firebase Android.
(Alternative) Ajouter des dépendances à la bibliothèque Firebase sans utiliser le BoM
Si vous choisissez de ne pas utiliser la nomenclature Firebase, vous devez spécifier chaque version de la bibliothèque Firebase dans sa ligne de dépendance.
Notez que si vous utilisez plusieurs bibliothèques Firebase dans votre application, nous vous recommandons vivement d'utiliser la BoM pour gérer les versions de bibliothèque, ce qui garantit que toutes les versions sont compatibles.
dependencies { // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-messaging-ktx:23.1.2' implementation 'com.google.firebase:firebase-analytics-ktx:21.3.0' }
Synchronisez votre projet Android avec les fichiers Gradle.
Les builds Gradle qui utilisent le plug-in Android Gradle (AGP) v4.2 ou une version antérieure doivent activer la prise en charge de Java 8. Sinon, ces projets Android obtiennent un échec de génération lors de l'ajout d'un SDK Firebase.
Pour corriger cet échec de compilation, vous pouvez suivre l'une des deux options suivantes :
- Ajoutez les
compileOptions
répertoriées du message d'erreur à votre fichierbuild.gradle
au niveau de l'application . - Augmentez la
minSdkVersion
pour votre projet Android à 26 ou plus.
En savoir plus sur cet échec de build dans cette FAQ .
- Ajoutez les
Abonnez l'application cliente à un sujet
Les applications clientes peuvent s'abonner à n'importe quel sujet existant ou créer un nouveau sujet. Lorsqu'une application cliente s'abonne à un nouveau nom de rubrique (qui n'existe pas déjà pour votre projet Firebase), une nouvelle rubrique portant ce nom est créée dans FCM et tout client peut ensuite s'y abonner.
Pour s'abonner à un sujet, l'application cliente appelle Firebase Cloud Messaging subscribeToTopic()
avec le nom du sujet FCM. Cette méthode renvoie un Task
, qui peut être utilisé par un écouteur d'achèvement pour déterminer si l'abonnement a réussi :
Kotlin+KTX
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 sujet.
Recevoir et gérer les messages du sujet
FCM transmet les messages de rubrique de la même manière que les autres messages en aval.
Pour recevoir des messages, utilisez un service qui étend FirebaseMessagingService . Votre service doit remplacer les rappels onMessageReceived
et onDeletedMessages
. Il devrait traiter tout message dans les 20 secondes suivant sa réception (10 secondes sur Android Marshmallow). La fenêtre de temps peut être plus courte en fonction des retards du système d'exploitation encourus avant d'appeler onMessageReceived
. Après cette période, divers comportements du système d'exploitation tels que les limites d'exécution en arrière-plan d'Android O peuvent interférer avec votre capacité à terminer votre travail. Pour plus d'informations, consultez notre aperçu sur la priorité des messages .
onMessageReceived
est fourni pour la plupart des types de messages, avec les exceptions suivantes :
Messages de notification délivrés lorsque votre application est en arrière-plan . Dans ce cas, la notification est envoyée dans la barre d'état système de l'appareil. Un utilisateur tape sur une notification ouvre le lanceur d'application par défaut.
Messages avec à la fois une notification et une charge utile de données, lorsqu'ils sont reçus en arrière-plan . Dans ce cas, la notification est envoyée dans la barre d'état système de l'appareil et la charge utile des données est livrée dans les extras de l'intention de votre activité de lancement.
En résumé:
État de l'application | Notification | Données | Les deux |
---|---|---|---|
Premier plan | onMessageReceived | onMessageReceived | onMessageReceived |
Arrière-plan | Barre d'état système | onMessageReceived | Notification : barre d'état système Données : dans les extras de l'intention. |
Modifier le manifeste de l'application
Pour utiliser FirebaseMessagingService
, vous devez ajouter les éléments suivants dans le manifeste de votre application :
<service android:name=".java.MyFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
De plus, il est recommandé de définir des valeurs par défaut pour personnaliser l'apparence des notifications. Vous pouvez spécifier une icône par défaut personnalisée et une couleur par défaut personnalisée qui sont appliquées chaque fois que des valeurs équivalentes ne sont pas définies dans la charge utile de notification.
Ajoutez ces lignes à l'intérieur de la balise application
pour définir l'icône et la couleur personnalisées par défaut :
<!-- Set custom default icon. This is used when no icon is set for incoming notification messages. See README(https://goo.gl/l4GJaQ) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" /> <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming notification message. See README(https://goo.gl/6BKBk7) for more. --> <meta-data android:name="com.google.firebase.messaging.default_notification_color" android:resource="@color/colorAccent" />
Android affiche l'icône par défaut personnalisée pour
- Tous les messages de notification envoyés depuis l' éditeur de notifications .
- Tout message de notification qui ne définit pas explicitement l'icône dans la charge utile de notification.
Android utilise la couleur par défaut personnalisée pour
- Tous les messages de notification envoyés depuis l' éditeur de notifications .
- Tout message de notification qui ne définit pas explicitement la couleur dans la charge utile de notification.
Si aucune icône par défaut personnalisée n'est définie et qu'aucune icône n'est définie dans la charge utile de notification, Android affiche l'icône de l'application rendue en blanc.
Remplacer onMessageReceived
En remplaçant la méthode FirebaseMessagingService.onMessageReceived
, vous pouvez effectuer des actions basées sur l'objet RemoteMessage reçu et obtenir les données du message :
Kotlin+KTX
override fun onMessageReceived(remoteMessage: RemoteMessage) { // TODO(developer): Handle FCM messages here. // Not getting messages here? See why this may be: https://goo.gl/39bRNJ Log.d(TAG, "From: ${remoteMessage.from}") // Check if message contains a data payload. if (remoteMessage.data.isNotEmpty()) { Log.d(TAG, "Message data payload: ${remoteMessage.data}") // Check if data needs to be processed by long running job if (needsToBeScheduled()) { // For long-running tasks (10 seconds or more) use WorkManager. scheduleJob() } else { // Handle message within 10 seconds handleNow() } } // Check if message contains a notification payload. remoteMessage.notification?.let { Log.d(TAG, "Message Notification Body: ${it.body}") } // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. }
Java
@Override public void onMessageReceived(RemoteMessage remoteMessage) { // TODO(developer): Handle FCM messages here. // Not getting messages here? See why this may be: https://goo.gl/39bRNJ Log.d(TAG, "From: " + remoteMessage.getFrom()); // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + remoteMessage.getData()); if (/* Check if data needs to be processed by long running job */ true) { // For long-running tasks (10 seconds or more) use WorkManager. scheduleJob(); } else { // Handle message within 10 seconds handleNow(); } } // Check if message contains a notification payload. if (remoteMessage.getNotification() != null) { Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); } // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. }
Remplacer onDeletedMessages
Dans certaines situations, FCM peut ne pas délivrer de message. Cela se produit lorsqu'il y a trop de messages (> 100) en attente pour votre application sur un appareil particulier au moment où il se connecte ou si l'appareil ne s'est pas connecté à FCM depuis plus d'un mois. Dans ces cas, vous pouvez recevoir un rappel vers FirebaseMessagingService.onDeletedMessages()
Lorsque l'instance d'application reçoit ce rappel, elle doit effectuer une synchronisation complète avec votre serveur d'application. Si vous n'avez pas envoyé de message à l'application sur cet appareil au cours des 4 dernières semaines, FCM n'appellera pas onDeletedMessages()
.Gérer les messages de notification dans une application en arrière-plan
Lorsque votre application est en arrière-plan, Android dirige les messages de notification vers la barre d'état système. Un utilisateur tape sur la notification ouvre le lanceur d'applications par défaut.
Cela inclut les messages qui contiennent à la fois une charge utile de notification et de données (et tous les messages envoyés depuis la console Notifications). Dans ces cas, la notification est envoyée dans la barre d'état système de l'appareil et la charge utile des données est livrée dans les extras de l'intention de votre activité de lancement.
Pour obtenir des informations sur la livraison des messages à votre application, consultez le tableau de bord des rapports FCM , qui enregistre le nombre de messages envoyés et ouverts sur les appareils Apple et Android, ainsi que les données relatives aux « impressions » (notifications vues par les utilisateurs) pour les applications Android.
Créer des demandes d'envoi
Après avoir créé un sujet, soit en abonnant des instances d'application cliente au sujet côté client, soit via l' API du serveur , vous pouvez envoyer des messages au sujet. Si c'est la première fois que vous créez des demandes d'envoi pour FCM, consultez le guide de votre environnement de serveur et FCM pour obtenir des informations importantes sur le contexte et la configuration.
Dans votre logique d'envoi sur le backend, spécifiez le nom du sujet souhaité comme indiqué :
Node.js
// The topic name can be optionally prefixed with "/topics/".
const topic = 'highScores';
const message = {
data: {
score: '850',
time: '2:45'
},
topic: topic
};
// Send a message to devices subscribed to the provided topic.
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Java
// The topic name can be optionally prefixed with "/topics/".
String topic = "highScores";
// See documentation on defining a message payload.
Message message = Message.builder()
.putData("score", "850")
.putData("time", "2:45")
.setTopic(topic)
.build();
// Send a message to the devices subscribed to the provided topic.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
Python
# The topic name can be optionally prefixed with "/topics/".
topic = 'highScores'
# See documentation on defining a message payload.
message = messaging.Message(
data={
'score': '850',
'time': '2:45',
},
topic=topic,
)
# Send a message to the devices subscribed to the provided topic.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
Aller
// The topic name can be optionally prefixed with "/topics/".
topic := "highScores"
// See documentation on defining a message payload.
message := &messaging.Message{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Topic: topic,
}
// Send a message to the devices subscribed to the provided topic.
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)
C#
// The topic name can be optionally prefixed with "/topics/".
var topic = "highScores";
// See documentation on defining a message payload.
var message = new Message()
{
Data = new Dictionary<string, string>()
{
{ "score", "850" },
{ "time", "2:45" },
},
Topic = topic,
};
// Send a message to the devices subscribed to the provided topic.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);
REPOS
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"topic" : "foo-bar",
"notification" : {
"body" : "This is a Firebase Cloud Messaging Topic Message!",
"title" : "FCM Message"
}
}
}
Commande cURL :
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"message": {
"topic" : "foo-bar",
"notification": {
"body": "This is a Firebase Cloud Messaging Topic Message!",
"title": "FCM Message"
}
}
}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Pour envoyer un message à une combinaison de rubriques, spécifiez une condition , qui est une expression booléenne qui spécifie les rubriques cibles. Par exemple, la condition suivante enverra des messages aux appareils abonnés à TopicA
et TopicB
ou TopicC
:
"'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)"
FCM évalue d'abord toutes les conditions entre parenthèses, puis évalue l'expression de gauche à droite. Dans l'expression ci-dessus, un utilisateur abonné à un seul sujet ne reçoit pas le message. De même, un utilisateur qui n'est pas abonné à TopicA
ne reçoit pas le message. Ces combinaisons le reçoivent :
-
TopicA
etTopicB
-
TopicA
etTopicC
Vous pouvez inclure jusqu'à cinq rubriques dans votre expression conditionnelle.
Pour envoyer à une condition :
Node.js
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
const condition = '\'stock-GOOG\' in topics || \'industry-tech\' in topics';
// See documentation on defining a message payload.
const message = {
notification: {
title: '$FooCorp up 1.43% on the day',
body: '$FooCorp gained 11.80 points to close at 835.67, up 1.43% on the day.'
},
condition: condition
};
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Java
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
String condition = "'stock-GOOG' in topics || 'industry-tech' in topics";
// See documentation on defining a message payload.
Message message = Message.builder()
.setNotification(Notification.builder()
.setTitle("$GOOG up 1.43% on the day")
.setBody("$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")
.build())
.setCondition(condition)
.build();
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
String response = FirebaseMessaging.getInstance().send(message);
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);
Python
# Define a condition which will send to devices which are subscribed
# to either the Google stock or the tech industry topics.
condition = "'stock-GOOG' in topics || 'industry-tech' in topics"
# See documentation on defining a message payload.
message = messaging.Message(
notification=messaging.Notification(
title='$GOOG up 1.43% on the day',
body='$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.',
),
condition=condition,
)
# Send a message to devices subscribed to the combination of topics
# specified by the provided condition.
response = messaging.send(message)
# Response is a message ID string.
print('Successfully sent message:', response)
Aller
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
condition := "'stock-GOOG' in topics || 'industry-tech' in topics"
// See documentation on defining a message payload.
message := &messaging.Message{
Data: map[string]string{
"score": "850",
"time": "2:45",
},
Condition: condition,
}
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
response, err := client.Send(ctx, message)
if err != nil {
log.Fatalln(err)
}
// Response is a message ID string.
fmt.Println("Successfully sent message:", response)
C#
// Define a condition which will send to devices which are subscribed
// to either the Google stock or the tech industry topics.
var condition = "'stock-GOOG' in topics || 'industry-tech' in topics";
// See documentation on defining a message payload.
var message = new Message()
{
Notification = new Notification()
{
Title = "$GOOG up 1.43% on the day",
Body = "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.",
},
Condition = condition,
};
// Send a message to devices subscribed to the combination of topics
// specified by the provided condition.
string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
// Response is a message ID string.
Console.WriteLine("Successfully sent message: " + response);
REPOS
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"condition": "'dogs' in topics || 'cats' in topics",
"notification" : {
"body" : "This is a Firebase Cloud Messaging Topic Message!",
"title" : "FCM Message",
}
}
}
Commande cURL :
curl -X POST -H "Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA" -H "Content-Type: application/json" -d '{
"notification": {
"title": "FCM Message",
"body": "This is a Firebase Cloud Messaging Topic Message!",
},
"condition": "'dogs' in topics || 'cats' in topics"
}' https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Prochaines étapes
- Vous pouvez utiliser votre serveur pour abonner des instances d'application cliente à des rubriques et effectuer d'autres tâches de gestion. Voir Gérer les abonnements aux rubriques sur le serveur .
- En savoir plus sur l'autre méthode d'envoi vers plusieurs appareils — Messagerie de groupe d'appareils