Votre premier message push multicast à l'aide de sujets FCM

1. Introduction

Objectifs

Dans cet atelier de programmation, vous allez apprendre à instrumenter votre application multiplate-forme afin de pouvoir multicaster des messages push vers différents sous-groupes d'instances de votre application à l'aide des rubriques FCM.

Une fois l'opération terminée, vous pourrez utiliser l'infrastructure FCM pour gérer ces sous-groupes et diffuser des messages push multicast sur les sous-groupes.

Présentation des thèmes

Les thèmes sont une méthode compatible avec l'infrastructure FCM pour envoyer des messages à des sous-groupes d'instances de votre application.

FCM fournit les API permettant d'envoyer des messages et de gérer les abonnements à ces thèmes. L'association et la dissociation d'une instance d'application à un sujet sont appelées respectivement "s'abonner" et "se désabonner".

Les thèmes doivent être utilisés pour les contenus accessibles au public. Par exemple, les messages concernant les bulletins météo. Si vous souhaitez envoyer des messages contenant des informations sensibles sur les utilisateurs, utilisez le SDK Admin Firebase pour diffuser des messages sur plusieurs appareils.

La multidiffusion basée sur des thèmes est optimisée pour le débit.

Points abordés

  • Découvrez comment abonner (et désabonner) des utilisateurs à des thèmes depuis une application mobile.
  • Découvrez comment envoyer des messages push multicast à l'aide de thèmes.
  • Découvrez comment envoyer des messages à une combinaison de thèmes à l'aide de conditions de thème.
  • Découvrez comment gérer les abonnements aux thèmes côté serveur, et comment s'abonner ou se désabonner à plusieurs thèmes à la fois.

Objectifs de l'atelier

  • Application Android qui s'abonne à des thèmes/se désabonne de thèmes et reçoit des messages lorsqu'ils sont envoyés aux thèmes.
  • Une intégration côté serveur à l'aide du SDK Admin Firebase, qui sera utilisée pour envoyer des messages thématiques via les API FCM.

Prérequis

  • Un navigateur de votre choix, tel que Chrome.
  • L'IDE IntelliJ IDEA pour développer des applications Java.
    • Veillez à activer la prise en charge de Gradle lors de l'installation.
  • L'IDE Android Studio pour développer des applications Android.
  • Un appareil pour exécuter l'application Android. Soit :
    • L'émulateur Android (doit être configuré dans Android Studio)
    • Un appareil Android physique connecté à votre ordinateur et réglé en mode développeur
  • Un compte Google pour créer et gérer votre projet Firebase.

2. Configuration

Obtenir le code

Clonez le dépôt GitHub à partir de la ligne de commande :

git clone https://github.com/firebase/quickstart-android.git fcm-codelab

L'exemple de code sera cloné dans le répertoire fcm-codelab.

cd fcm-codelab

L'application de démarrage de cet atelier de programmation se trouve dans le répertoire messaging de la branche fcm-topics-codelab. Pour accéder au code de démarrage, procédez comme suit. Il contient deux répertoires : StockNewsApp et StockNewsServer. Le premier contient l'application Android de démarrage et le second le code côté serveur de démarrage.

git checkout fcm-topics-codelab
cd messaging/fcm-topics-codelab/starter

La version complète de cet atelier de programmation se trouve dans le répertoire messaging/fcm-topics-codelab/completed.

Créer un projet Firebase

  1. Connectez-vous à la console Firebase à l'aide de votre compte Google.
  2. Cliquez sur le bouton pour créer un projet, puis saisissez un nom de projet (par exemple, StockNews).
  3. Cliquez sur Continuer.
  4. Si vous y êtes invité, consultez et acceptez les Conditions d'utilisation de Firebase, puis cliquez sur Continuer.
  5. (Facultatif) Activez l'assistance IA dans la console Firebase (appelée "Gemini dans Firebase").
  6. Pour cet atelier de programmation, vous n'avez pas besoin de Google Analytics. Désactivez donc l'option Google Analytics.
  7. Cliquez sur Créer un projet, attendez que votre projet soit provisionné, puis cliquez sur Continuer.

Félicitations ! Vous venez de créer votre projet Firebase.

3. Configuration de l'application Firebase spécifique à la plate-forme

La plupart des modifications de code requises pour activer la compatibilité Firebase sont déjà activées dans le projet sur lequel vous travaillez. Toutefois, afin d'ajouter la compatibilité avec les plates-formes mobiles, vous devez :

  • Enregistrez la plate-forme souhaitée sur le projet Firebase.
  • Téléchargez le fichier de configuration correspondant à la plate-forme, puis ajoutez-le au code.

Pour les besoins de cet atelier de programmation, nous allons ajouter une application Android Firebase.

84e0b3199bef6d8a.pngConfigurer Android

  1. Dans la console Firebase, sélectionnez Paramètres du projet en haut de la barre de navigation de gauche (icône en forme de roue dentée), puis cliquez sur l'icône Android sous Vos applications sur la page Général.

La boîte de dialogue suivante doit s'afficher : 8254fc299e82f528.png

  1. La valeur importante à indiquer est le nom du package Android. Définissez-la sur com.ticker.stocknews.
    1. Le nom de package fourni ici doit être identique à celui fourni dans le AndroidManifest.xml de votre code StockNewsApp de démarrage. Pour le trouver ou le modifier, procédez comme suit :
      1. Dans le répertoire StockNewsApp, ouvrez le fichier app/src/main/AndroidManifest.xml.
      2. Dans l'élément manifest, recherchez la valeur de chaîne de l'attribut package. Cette valeur correspond au nom du package Android.
  1. Dans la boîte de dialogue Firebase, collez le nom du package copié dans le champ Nom du package Android.
  2. Vous n'avez pas besoin du certificat de signature de débogage SHA-1 pour cet atelier de programmation, car cette application ne sera pas publiée. Laissez ce champ vide.
  3. Cliquez sur Register App (Enregistrer l'application).
  4. Dans la console Firebase, suivez les instructions pour télécharger le fichier de configuration google-services.json.
  5. Vous pouvez ignorer les étapes de configuration restantes, car tout le reste est déjà configuré dans le code de l'application de démarrage. Votre application sera listée sur la page principale de la console Firebase.
  6. Copiez le fichier google-services.json (que vous venez de télécharger) dans le répertoire messaging/fcm-topics-codelab/starter/StockNewsApp/app.

4. Créer et exécuter votre application

Vous êtes prêt à travailler sur votre application. Commencez par compiler et exécuter l'application.

Importer l'application de démarrage

Démarrez Android Studio et importez le fichier messaging/fcm-topics-codelab/starter/StockNewsApp depuis le répertoire du code de démarrage.

Une fois le projet chargé, une alerte peut s'afficher, indiquant que Git ne suit pas toutes les modifications locales. Vous pouvez cliquer sur Ignore (Ignorer) ou sur le X en haut à droite. (Vous ne transmettrez pas vos modifications au dépôt Git.)

En haut à gauche de la fenêtre du projet, vous devriez obtenir une image semblable à celle ci-dessous si vous êtes dans la vue Android. (Si vous êtes dans la vue Project (Projet), vous devez développer le projet pour voir la même chose.)

b574ea0089ee87c6.png

Notez que, la première fois, Android Studio peut mettre plusieurs secondes pour compiler le projet en arrière-plan. Pendant ce temps, une icône de chargement s'affiche dans la barre d'état en bas d'Android Studio :

4bc64eb3b99eb0ae.png

Nous vous recommandons d'attendre la fin de cette opération avant de modifier le code. Android Studio pourra ainsi récupérer tous les composants nécessaires.

Si une invite "Reload for language changes to take effect?" (Charger à nouveau pour appliquer les modifications de langue) ou similaire apparaît, sélectionnez "Yes" (Oui).

Configuration de l'émulateur

Si vous avez besoin d'aide pour configurer un émulateur Android, consultez l'article Exécuter votre application.

Comprendre le code de démarrage de l'application Android

  • Le code de démarrage est une application Android légère avec des fonctionnalités et une UI minimales.
  • Une dépendance au SDK Firebase Messaging est déjà ajoutée au fichier app/build.gradle.

f04ff8f48d186dff.png

  • Dans AndroidManifest.xml, un gestionnaire de rappel MESSAGING_EVENT est déjà ajouté.
    • Ce gestionnaire, StockNewsMessagingService.java, étend la classe FirebaseMessagingService qui fournit diverses fonctionnalités liées à Firebase Cloud Messaging. Pour en savoir plus, consultez la documentation de FirebaseMessagingService. b843c4d33ee53166.png
    88fad1960f4a6ff5.png * The `onNewToken` function gets called when the FCM Registration Token is created or refreshed. Pour en savoir plus, consultez [Surveiller la génération de jetons](https://firebase.google.com/docs/cloud-messaging/android/client#monitor-token-generation). * La fonction `onMessageReceived` est appelée lorsqu'un message est reçu et que l'application est au premier plan. Actuellement, il enregistre simplement le message reçu. * Consultez [Recevoir des messages dans une application Android](https://firebase.google.com/docs/cloud-messaging/android/receive) pour en savoir plus sur les différences entre la distribution et le traitement des messages en arrière-plan et au premier plan.
  • De plus, dans AndroidManifest.xml, une classe Application Android nommée StockNewsApplication est également fournie. a4982a8731492dfc.png ccde692f7f68dc5a.png * This class will be the first one to be instantiated when the App starts up. * Un appel de création de jeton d'enregistrement FCM est ajouté à la fonction `onCreate` de la classe `StockNewsApplication`. Il générera un jeton d'enregistrement FCM valide et l'enregistrera.
  • MainActivity.java ajoute RecyclerView qui affiche les choix de catégorie de stock.
  • SubscriptionAdapter.java implémente RecyclerView.Adapter qui affiche l'écran de sélection de la catégorie de stock.
    • Chaque catégorie de stock possède un nom et un bouton d'abonnement à côté.
    • La modification du bouton bascule doit entraîner un appel d'abonnement / désabonnement à un sujet FCM.
    • Vous implémenterez ces appels dans les sections à venir.
  • La classe model/StockCategories.java contient la liste de toutes les catégories de stock et des noms de thèmes associés.

b32663ec4e865a18.png

Exécuter l'application de démarrage

  1. Connectez votre appareil Android à votre ordinateur ou démarrez un émulateur.
  2. Dans la barre d'outils supérieure, sélectionnez votre appareil Android ou votre émulateur cible, puis appuyez sur le bouton d'exécution.

5b27fc5b237e06b9.png

  1. L'UI de l'application se présentera comme suit :

ff5b1a1c53231c54.png

  1. L'application crée un jeton d'enregistrement FCM et l'enregistre. Toutefois, rien ne changera dans l'interface utilisateur de l'application.
    1. Copiez et enregistrez le jeton d'enregistrement FCM, car vous en aurez besoin pour les étapes suivantes.

927eb66bc909f36b.png

5. Envoyer un message de test

Vous êtes maintenant prêt à envoyer un message de test à l'instance d'application que vous avez configurée à l'étape précédente.

Importer le code de serveur de démarrage

Démarrez IntelliJ IDEA et ouvrez le projet messaging/fcm-topics-codelab/starter/StockNewsServer.

La vue du projet dans la barre de navigation de gauche devrait se présenter comme suit :

da20711f6527dff6.png

Notez que la création de votre projet par IntelliJ IDEA peut prendre quelques minutes, y compris l'extraction des dépendances requises.

Comprendre le code de démarrage du serveur

  • Le code de démarrage du serveur est un projet Java basé sur Gradle.
  • Le fichier build.gradle contient déjà la dépendance sur le SDK Firebase Admin. Ce SDK permet d'accéder à diverses fonctionnalités d'envoi de messages FCM.

650fc733298588f8.png

  • Enfin, il existe deux classes :
    • FcmSender.java : cette classe contient les méthodes suivantes :
      • initFirebaseSDK : initialise le SDK Admin Firebase.
      • sendMessageToFcmRegistrationToken : envoie un message à un jeton d'enregistrement FCM.
      • sendMessageToFcmTopic : envoyer un message à un sujet FCM.
      • sendMessageToFcmTopicCondition : envoyer un message à une condition de sujet FCM.
    • FcmSubscriptionManager.java : cette classe contient des méthodes permettant de gérer les abonnements aux thèmes côté serveur.
      • initFirebaseSDK : initialise le SDK Admin Firebase.
      • subscribeFcmRegistrationTokensToTopic : abonnez un ou plusieurs jetons d'enregistrement FCM à un thème FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : désabonnez un ou plusieurs jetons d'enregistrement FCM d'un sujet FCM.

Configurer le code du serveur

  1. Tout d'abord, nous devons configurer un compte de service Firebase qui permet au SDK firebase-admin d'autoriser les appels aux API FCM.
    1. Accédez à la console Firebase, cliquez sur l'icône en forme de roue dentée à côté de Vue d'ensemble du projet dans la barre de navigation de gauche, puis sélectionnez Paramètres du projet. 8c2108d4d7c915e9.png
    2. Sur la page des paramètres, sélectionnez Comptes de service, puis cliquez sur Créer un compte de service. 84b128cc5dac0a85.png
    3. Cliquez ensuite sur le bouton Générer une nouvelle clé privée. Le téléchargement automatique de votre fichier de clé commencera.
    4. Renommez le fichier de clé service-account.json et copiez-le dans le dossier messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources.
    5. FcmSender.java et FcmSubscriptionManager.java chargent le fichier service-account.json à partir du chemin de classe à l'aide du code suivant. 8dffbee658e0bdd.png
  2. À ce stade, le code du serveur est prêt. Exécutez Build > Build Project (Compiler > Compiler le projet) dans la barre de menu supérieure.

Envoyer un message de test

  1. Dans FcmSender.java, localisez la fonction sendMessageToFcmRegistrationToken et insérez le jeton d'enregistrement FCM que vous avez copié dans la section Exécuter l'application de démarrage dans le champ registrationToken.
  2. Dans la fonction main, annulez la mise en commentaire de la fonction sendMessageToFcmRegistrationToken, puis cliquez sur "Exécuter" pour exécuter le code.
    1. Notez comment le jeton d'enregistrement FCM est défini dans le champ Token de l'objet message.
    2. Notez également que nous avons utilisé l'API send de l'interface FirebaseMessaging.

52e4a3ec3f816473.png

  1. Un message doit être envoyé à l'instance d'application que vous avez configurée à l'étape précédente.
  2. Lorsque l'instance d'application est au premier plan, le contenu du message doit être enregistré.

d3540ec1089f97dd.png

  1. Lorsque l'instance d'application est en arrière-plan, le message s'affiche dans la barre de notification.

31203deca59c03fe.png

Bravo ! Vous avez utilisé le SDK Admin Firebase pour envoyer des messages à une instance d'application. En savoir plus sur l'utilisation du SDK Firebase Admin sur votre serveur

6. Implémenter l'abonnement / le désabonnement à un sujet

À cette étape, vous allez implémenter les actions d'abonnement et de désabonnement aux thèmes sur le bouton bascule "Catégorie de stock" de l'application Android.

Lorsqu'un utilisateur de l'application active ou désactive une catégorie de stock spécifique, un appel d'abonnement ou de désabonnement à un thème est effectué.

Examiner le code

  • Accédez à la classe SubscriptionAdapter.java dans le code de l'application Android et localisez la classe RecyclerViewViewHolder.

6c0614199e684f6.png

  • Le constructeur de classe configure un écouteur pour le bouton bascule d'abonnement à l'aide de setOnCheckedChangeListener.
  • Selon l'état du bouton bascule, les actions d'abonnement et de désabonnement sont effectuées en appelant respectivement les méthodes subscribeToStockCategory et unsubscribeFromStockCategory.
  • La méthode setData est appelée par le onBindViewHolder de l'adaptateur RecyclerView pour associer le ViewHolder à la catégorie de stock appropriée.

Implémenter l'abonnement à un thème

  1. Dans la méthode subscribeToStockCategory, vous implémenterez l'appel à l'API subscribeToTopic de l'objet FirebaseMessaging. Le code pourrait se présenter comme suit :
   void subscribeToStockCategory() {
      // Making call to FCM for subscribing to the topic for stockCategory
     FirebaseMessaging.getInstance().subscribeToTopic(stockCategory.getTopicName()).addOnSuccessListener(
          unused -> {
            // Subscribing action successful
            Log.i(TAG, "Subscribed to topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Subscribed to " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Implémenter la désinscription aux thèmes

  1. De même, dans la condition else, vous implémenterez l'appel à l'API unsubscribeFromTopic. Voici quelques exemples :
void unsubscribeFromStockCategory() {
      // Making call to FCM for unsubscribing from the topic for stockCategory
      FirebaseMessaging.getInstance().unsubscribeFromTopic(stockCategory.getTopicName())
          .addOnSuccessListener(unused -> {
            // Unsubscribing action successful
            Log.i(TAG, "Unsubscribed from topic: " + stockCategory.getTopicName());
            Toast.makeText(itemView.getContext(), "Unsubscribed from " + stockCategory.getCategoryName(),
                Toast.LENGTH_SHORT).show();
          });
    }

Essayons-la

  1. Exécutez l'application et activez/désactivez les options de catégorie de stock pour exécuter les actions d'abonnement et de désabonnement. Celle-ci se présente alors sous la forme suivante :

S'abonner

Se désabonner

7. Envoyer votre premier message dans un sujet

Au cours de cette étape, vous allez implémenter le code côté serveur pour envoyer un message de sujet FCM.

Implémenter l'intégration côté serveur pour envoyer un message à un thème

  1. Dans le code du serveur, accédez à FcmSender.java et recherchez la méthode nommée sendMessageToFcmTopic.

56381dd1b40cde9c.png

  1. Sur la première ligne, indiquez le sujet FCM auquel vous souhaitez envoyer le message.
    • Il s'agit d'une chaîne au format /topics/<Topic Name>. Exemple :/topics/Technology
  2. Dans les lignes suivantes, créez un objet message (semblable à celui défini dans la fonction sendMessageToFcmRegistrationToken).
    • La différence est que, au lieu de définir le champ Token de l'objet message, vous définissez le champ Topic.
Message message = Message.builder()
        .putData("FOOTECH", "$1000")
        .setNotification(
            Notification.builder()
                .setTitle("Investor confidence in Tech Stocks growing")
                .setBody("Foo Tech leading the way in stock growth for Tech sector.")
                .build())
        .setTopic(topicName)
        .build();
  1. Ajoutez maintenant l'appel à l'instance FirebaseMessaging pour envoyer le message (identique à l'appel d'envoi effectué dans la fonction sendMessageToFcmRegistrationToken).
FirebaseMessaging.getInstance().send(message);
  1. Enfin, mettez à jour la fonction main et n'activez que l'appel à la fonction sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Envoyer un message et valider la réception

  1. Avant d'envoyer le message thématique, assurez-vous d'abord que l'instance de votre application est abonnée au thème auquel vous souhaitez l'envoyer.
    1. Pour ce faire, il vous suffit d'activer le bouton correspondant. Exemple :
    4668247408377712.png
  2. Vous pouvez maintenant envoyer le message de votre sujet en exécutant la fonction main de FcmSender.java.
  3. Comme avant, vous devriez pouvoir observer la réception du message dans l'instance de l'application.
    1. Instance d'application au premier plan
    c144721399f610fe.png
    1. Instance d'application en arrière-plan
    44efc7dfd57e8e9a.png
  4. Bonus : Essayez de vous désabonner de la chaîne à laquelle vous avez envoyé le message, puis renvoyez-le. Vous constaterez que le message n'est pas remis à l'instance de l'application.

8. Envoyer votre premier message de condition de thème

La fonctionnalité de condition de thème vous permet d'envoyer des messages à une combinaison de thèmes, ce qui vous permet de définir plus précisément votre audience.

Par exemple, dans notre application StockNews, envisagez la possibilité d'envoyer des messages à un groupe d'instances d'application abonnées aux thèmes "Technologie" ou "Automobile". Cela peut se produire, par exemple, en cas d'événement notable impliquant Waymo.

Les thèmes vous permettent d'exprimer votre combinaison sous la forme d'une expression booléenne à l'aide des opérateurs suivants :

  • && : AND logique. Par exemple, 'Technology' in topics && 'Automotive' in topics ne cible que les instances d'application abonnées aux thèmes "Technologie" et "Automobile".
  • || : OR logique. Par exemple, 'Technology' in topics || 'Automotive' in topics cible les instances d'application abonnées aux thèmes "Technologie" ou "Automobile".
  • () : parenthèses de regroupement. Par exemple, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) ne cible que les instances d'application abonnées aux thèmes "Technologie" et "Automobile" ou "Énergie".

Découvrez comment créer des demandes d'envoi pour utiliser cette fonctionnalité.

Implémenter l'intégration côté serveur pour envoyer un message de condition de thème

  1. De retour dans le code du serveur, accédez à FcmSender.java et recherchez la méthode nommée sendMessageToFcmTopicCondition.

3719a86c274522cf.png

  1. Sur la première ligne, pour la variable topicCondition, indiquez la condition de sujet à laquelle vous souhaitez envoyer le message. Vous pouvez définir la valeur sur : 'Technology' in topics && 'Automotive' in topics.
  2. Dans les lignes suivantes, créez un objet message (semblable à celui défini dans la fonction sendMessageToFcmTopic).
    1. La différence est que vous définissez le champ Condition au lieu du champ Topic de l'objet.
    Message message = Message.builder()
        .putData("FOOCAR", "$500")
        .setNotification(
            Notification.builder()
                .setTitle("Foo Car shows strong Q2 results")
                .setBody("Foo Car crosses 1B miles. Stocks rally.")
                .build())
        .setCondition(topicCondition)
        .build();
  1. Ajoutez maintenant l'appel à l'instance FirebaseMessaging pour envoyer le message (identique à l'appel d'envoi effectué dans la fonction sendMessageToFcmTopic).
FirebaseMessaging.getInstance().send(message);
  1. Enfin, mettez à jour la fonction main et n'activez que l'appel à la fonction sendMessageToFcmTopicCondition.

db9588d40d2a0da6.png

Envoyer le message et valider la réception

  1. Avant d'envoyer le message de sujet, assurez-vous d'abord que l'instance de votre application satisfait à la condition de sujet spécifiée en abonnant l'instance de l'application aux sujets "Technologie" et "Automobile".
  2. Vous pouvez maintenant envoyer le message de votre sujet en exécutant la fonction main de FcmSender.java.
  3. Comme avant, vous devriez pouvoir observer la réception du message sur l'instance de l'application.
    1. Instance d'application au premier plan
    6f612ace15aa6515.png
    1. Instance d'application en arrière-plan
    78044a56ac2359cb.png
  4. Bonus : Vous pouvez maintenant vous désabonner du thème "Technologie" et renvoyer le message de condition du thème. Vous devriez constater que le message n'est pas reçu par l'instance d'application.

9. Récapitulatif

Récapitulons rapidement ce que vous avez appris jusqu'à présent.

  • Comment s'abonner à un thème ou se désabonner d'un thème à partir d'une instance d'application
  • Envoyer un message au sujet et vérifier sa réception sur les instances d'application abonnées.
  • Envoyer un message à un sujet Condition et vérifier la réception sur une instance d'application qui remplit la condition.

Dans la section suivante, vous allez découvrir comment vous pouvez abonner / désabonner des instances d'application à des thèmes sans avoir besoin d'instancier des appels côté client.

c0dc20655d392690.gif

10. Gérer les abonnements aux thèmes côté serveur

Jusqu'à présent, dans cet atelier de programmation, tous les appels d'abonnement et de désabonnement aux thèmes sont initiés à partir d'une instance d'application.

Toutefois, dans certains cas d'utilisation, vous pouvez gérer les abonnements aux thèmes côté serveur. Par exemple, vous pouvez souhaiter abonner un sous-groupe de votre base d'utilisateurs existante à un nouveau sujet sans attendre le déploiement d'une application.

Dans cette section, vous allez apprendre à utiliser le SDK Admin Firebase pour abonner et désabonner un lot de jetons d'enregistrement FCM à un thème en effectuant des appels côté serveur.

Implémenter l'abonnement côté serveur des jetons d'enregistrement FCM à un thème FCM

  1. Dans le code du serveur, accédez à la classe FcmSubscriptionManager.java. Recherchez la méthode nommée subscribeFcmRegistrationTokensToTopic. Vous allez implémenter l'appel à l'API subscribeToTopic ici.

5d5709e7b3cbcb04.png

  1. Abonnons l'instance d'application au sujet "Energy". Pour ce faire, commencez par fournir des données pour les deux champs suivants :
    1. registrationTokens : liste de chaînes séparées par une virgule, représentant les jetons d'enregistrement FCM pour lesquels vous souhaitez créer des abonnements à des thèmes.
    2. topicName : nom du thème "Énergie", c'est-à-dire /topics/Energy.
  2. Dans les lignes suivantes, implémentez l'appel comme suit :
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Vous pouvez inspecter TopicManagementResponse pour obtenir des statistiques générales sur les résultats. Par exemple, en imprimant le nombre d'abonnements aux sujets créés à l'aide de getSuccessCount.
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Enfin, dans la fonction main, n'autorisez les appels qu'à la fonction subscribeFcmRegistrationTokensToTopic.

Créer un abonnement et envoyer un message à un thème

  1. Vous êtes maintenant prêt à créer l'abonnement au sujet et à lui envoyer un message.
  2. Exécutez la fonction main de la classe FcmSubscriptionManager.java. Cette action créera un abonnement à un sujet.
  3. Maintenant, configurez le code pour envoyer le message. Comme précédemment,
    1. Dans FcmSender.java, localisez la fonction sendMessageToFcmTopic.
    2. Définissez topicName sur le thème "Énergie", c'est-à-dire : /topics/Energy.
    3. Créez un objet Message et ciblez-le sur le sujet à l'aide de setTopic.
    4. Enfin, mettez à jour la méthode main pour n'activer que la fonction sendMessageToFcmTopic.
  4. Exécutez la fonction main de FcmSender.java. Le message est alors envoyé à l'instance de votre application, et vous pouvez l'observer dans votre application comme suit.
    1. Instance d'application au premier plan
    40ab6cf71e0e4116.png
    1. Instance d'application en arrière-plan
    8fba81037198209e.png

Implémenter la désinscription côté serveur des jetons d'enregistrement FCM au sujet FCM

  1. Pour les désabonnements aux thèmes côté serveur, utilisez l'API unsubscribeFromTopic. Vous allez ajouter le code approprié à la fonction unsubscribeFcmRegistrationTokensFromTopic de la classe FcmSubscriptionManager.java.

8d9e8ea9d34016bd.png

  1. L'implémentation du code de désabonnement côté serveur et la validation de son effet en envoyant un message thématique sont laissées à votre discrétion.

11. Félicitations

Félicitations, vous avez réussi à utiliser les rubriques FCM pour envoyer des messages multicast à des sous-groupes d'instances de votre application. Cela vous permettra de toucher plus facilement vos utilisateurs avec des contenus pertinents.

947def3eb33b1e4a.gif

Étape suivante

Maintenant que vous avez terminé cet atelier de programmation, essayez d'autres plates-formes en consultant les guides suivants :

Documents de référence