Votre premier message push multidiffusion utilisant des sujets FCM

1. Introduction

Objectifs

Dans cet atelier de programmation, vous apprendrez à instrumenter votre application multiplateforme afin de pouvoir multidiffuser des messages push vers différents sous-groupes d'instances de votre application à l'aide de sujets FCM.

Une fois terminé, vous pourrez exploiter l'infrastructure FCM pour gérer ces sous-groupes ainsi que multidiffuser des messages push sur les sous-groupes.

Aperçu des sujets

Les sujets constituent un moyen pris en charge par l'infrastructure FCM d'atteindre des sous-groupes de vos instances d'application avec des messages.

FCM fournit les API pour envoyer des messages et gérer les abonnements à ces sujets. L'acte d'associer et de dissocier une instance d'application à un sujet est appelé respectivement abonnement et désabonnement.

Les sujets doivent être utilisés pour du contenu accessible au public. Par exemple, des messages sur les mises à jour météo. Si vous souhaitez envoyer des messages sensibles à l'utilisateur, utilisez le SDK d'administration Firebase pour diffuser des messages en multidiffusion sur plusieurs appareils .

La multidiffusion basée sur des sujets est optimisée pour le débit.

Ce que vous apprendrez

  • Comment abonner (et désabonner) des utilisateurs à des sujets depuis une application mobile.
  • Comment envoyer des messages push multicast à l'aide de sujets.
  • Comment envoyer des messages à une combinaison de sujets à l'aide de conditions de sujet.
  • Comment gérer les abonnements aux sujets côté serveur et effectuer des abonnements et désabonnements groupés.

Ce que vous construirez

  • Une application Android qui s'abonne/se désabonne aux sujets et reçoit des messages lorsqu'ils sont envoyés aux sujets.
  • Une intégration côté serveur utilisant le SDK Firebase Admin, qui sera utilisé pour envoyer des messages de sujet via les API FCM.

Ce dont vous aurez besoin

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

2. Mise en place

Obtenez 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 . Suivez les étapes suivantes pour atteindre le code de démarrage. Il contient deux répertoires StockNewsApp et StockNewsServer . Le premier contient l’application Android de démarrage et le second contient le code côté serveur de démarrage.

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

La version terminée de cet atelier de programmation est placée dans le répertoire messaging/fcm-topics-codelab/completed .

Créer un projet Firebase

  1. Dans la console Firebase , cliquez sur Ajouter un projet , nommez le projet Firebase StockNews et cliquez sur Continuer. Remarque : N'oubliez pas l'ID de projet de votre projet Firebase (ou cliquez sur l'icône Modifier pour définir votre ID de projet préféré).

fc08f9a7808e4553.png

  1. Vous pouvez ignorer l'activation de Google Analytics. Pour les besoins de cet atelier de programmation, vous n'en avez pas besoin. Cliquez sur Continuer.
  2. Cliquez sur Créer un projet .

Toutes nos félicitations! Vous venez de créer votre projet Firebase. Maintenant, vous pouvez cliquer sur le nom du projet pour accéder à la console.

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

La plupart des modifications de code requises pour activer la prise en charge de Firebase sont déjà enregistrées dans le projet sur lequel vous travaillez. Cependant, afin d'ajouter la prise en charge des plates-formes mobiles, vous devez :

  • Enregistrez la plateforme souhaitée sur le projet Firebase
  • Téléchargez le fichier de configuration spécifique à la plate-forme et ajoutez-le au code.

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

84e0b3199bef6d8a.png Configurer Android

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

Vous devriez voir la boîte de dialogue suivante : 8254fc299e82f528.png

  1. La valeur importante à fournir est le nom du package Android . Définissez-le sur com.ticker.stocknews .
    1. Le nom du package fourni ici doit être le même que celui fourni dans le AndroidManifest.xml de votre code StockNewsApp de démarrage. Si vous souhaitez le localiser 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 est le 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 Enregistrer l'application .
  4. En continuant 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. Vous trouverez votre application répertorié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éez et exécutez votre application

Vous êtes prêt à commencer à travailler sur votre application ! Tout d’abord, créez et exécutez l’application.

Importer l'application de démarrage

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

Une fois le projet chargé, vous pouvez également voir une alerte indiquant que Git ne suit pas toutes vos modifications locales, vous pouvez cliquer sur " Ignorer " ou sur le " X " en haut à droite. (Vous ne reporterez aucune modification au dépôt Git.)

Dans le coin supérieur gauche de la fenêtre du projet, vous devriez voir quelque chose comme l'image ci-dessous si vous êtes dans la vue Android . (Si vous êtes dans la vue Projet , vous devrez développer le projet pour voir la même chose)

b574ea0089ee87c6.png

Veuillez noter qu'Android Studio peut prendre plusieurs secondes pour compiler le projet en arrière-plan pour la première fois. Pendant ce temps, vous verrez une icône dans la barre d'état en bas d'Android Studio :

4bc64eb3b99eb0ae.png

Nous vous recommandons d'attendre que cette opération soit terminée avant de modifier le code. Cela permettra à Android Studio d'intégrer tous les composants nécessaires.

De plus, si vous recevez une invite indiquant « Recharger pour que les modifications de langue prennent effet ? » ou quelque chose de similaire, sélectionnez "Oui".

Configuration de l'émulateur

Si vous avez besoin d'aide pour configurer un émulateur Android, reportez-vous à 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 interface utilisateur 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. Consultez la documentation FirebaseMessagingService pour en savoir plus. b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • La fonction onNewToken est appelée lorsque le jeton d'enregistrement FCM est créé ou actualisé. Voir Surveiller la génération de jetons pour plus d’informations.
    • 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.
  • De plus, dans AndroidManifest.xml , une classe Application Android nommée StockNewsApplication est également fournie. a4982a8731492dfc.pngccde692f7f68dc5a.png
    • Cette classe sera la première à être instanciée au démarrage de l’application.
    • Dans la fonction onCreate de la classe StockNewsApplication , un appel de création de jeton d'enregistrement FCM est ajouté. Il générera un jeton d'enregistrement FCM valide et l'enregistrera.
  • Le MainActivity.java ajoute le RecyclerView qui affiche les choix de catégorie de stock.
  • SubscriptionAdapter.java implémente RecyclerView.Adapter qui dessine l'écran de sélection de catégorie de stock.
    • Chaque catégorie de stock a un nom et une bascule d'abonnement à côté.
    • La modification de la bascule devrait effectuer un appel d'abonnement/désabonnement au sujet FCM.
    • Vous mettrez en œuvre ces appels dans les sections à venir.
  • La classe model/StockCategories.java contient une liste de toutes les catégories de stock et leurs noms de rubrique associés.

b32663ec4e865a18.png

Exécutez 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 ou émulateur Android cible et appuyez sur le bouton Exécuter.

5b27fc5b237e06b9.png

  1. L'interface utilisateur de l'application ressemblera à ceci :

ff5b1a1c53231c54.png

  1. L'application créera un jeton d'enregistrement FCM et l'enregistrera. Cependant, rien ne changera dans l'interface utilisateur de l'application.
    1. Copiez et enregistrez le jeton d'enregistrement FCM car il sera utilisé dans les prochaines étapes.

927eb66bc909f36b.png

5. Envoyer un message test

Vous êtes maintenant prêt à envoyer un message test à l'instance d'application que vous avez configurée à la dernière étape.

Importer le code du serveur de démarrage

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

La vue du projet dans votre barre de navigation de gauche devrait ressembler à ceci :

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 a déjà la dépendance sur le SDK firebase-admin qui y est ajoutée. Ce SDK donne accès à diverses fonctionnalités d'envoi de messages FCM.

650fc733298588f8.png

  • Enfin, il existe deux classes, à savoir :
    • FcmSender.java : Cette classe contient les méthodes suivantes :
      • initFirebaseSDK : initialise le SDK Firebase-admin.
      • sendMessageToFcmRegistrationToken : envoie un message à un jeton d'enregistrement FCM.
      • sendMessageToFcmTopic : envoyer un message vers un sujet FCM.
      • sendMessageToFcmTopicCondition : envoie un message à une condition de sujet FCM.
    • FcmSubscriptionManager.java : Cette classe contient des méthodes qui permettent de gérer les abonnements aux rubriques côté serveur.
      • initFirebaseSDK : initialise le SDK Firebase-admin.
      • subscribeFcmRegistrationTokensToTopic : abonnez les jetons d'enregistrement FCM à un sujet FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : désabonnez les jetons d'enregistrement FCM d'un sujet FCM.

Configuration du 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 d'engrenage à côté de Présentation du projet dans la barre de navigation de gauche et sélectionnez Paramètres du projet . 8c2108d4d7c915e9.png
    2. Dans la page des paramètres, sélectionnez Comptes de service et cliquez sur Créer un compte de service . 84b128cc5dac0a85.png
    3. Cliquez maintenant sur le bouton Générer une nouvelle clé privée et un téléchargement automatique de votre fichier de clé commencera.
    4. Renommez le fichier de clé en 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 dans la barre de menu supérieure.

Envoi d'un message test

  1. Dans FcmSender.java localisez la fonction sendMessageToFcmRegistrationToken et insérez le jeton d'enregistrement FCM que vous avez copié depuis la section Exécuter l'application de démarrage dans le champ registrationToken .
  2. Dans la fonction main , décommentez uniquement la fonction sendMessageToFcmRegistrationToken et cliquez sur Exécuter pour exécuter le code.
    1. Observez comment le jeton d'enregistrement FCM est défini dans le champ Token de l'objet message .
    2. De plus, remarquez comment nous avons utilisé l'API send de l'interface FirebaseMessaging .

52e4a3ec3f816473.png

  1. Cela devrait envoyer un message à l'instance d'application que vous avez configurée à l'étape précédente.
  2. Lorsque l'instance d'application est au premier plan, vous devriez voir le contenu du message enregistré.

d3540ec1089f97dd.png

  1. Et lorsque l'instance d'application est en arrière-plan, vous observerez le message apparaître dans la barre de notifications.

31203deca59c03fe.png

Génial, vous avez utilisé le SDK Firebase Admin pour envoyer des messages à une instance d'application. En savoir plus sur l'utilisation du SDK Firebase Admin sur votre serveur .

6. Mettre en œuvre l'abonnement/désabonnement au sujet

Dans cette étape, vous mettrez en œuvre des actions d'abonnement et de désabonnement à un sujet, sur la bascule Catégorie de stock de l'application Android.

Lorsqu'un utilisateur de l'application bascule le commutateur pour une catégorie d'actions particulière, un appel d'abonnement ou de désabonnement au sujet sera effectué.

Code de révision

  • 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 la bascule d'abonnement à l'aide de setOnCheckedChangeListener .
  • En fonction de la bascule du commutateur, 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 onBindViewHolder de l’adaptateur RecyclerView pour lier le ViewHolder à la catégorie de stock appropriée.

Implémenter l'abonnement au sujet

  1. Dans la méthode subscribeToStockCategory , vous implémenterez l'appel à l'API subscribeToTopic de l'objet FirebaseMessaging . Le code pourrait ressembler à ceci :
   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();
          });
    }

Mettre en œuvre le désabonnement du sujet

  1. De même, dans la condition else, vous implémenterez l’appel à l’API unsubscribeFromTopic . Quelque chose dans le sens de ce qui suit :
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-le

  1. Exécutez l'application et activez les options de catégorie de stock pour exécuter les actions d'abonnement et de désabonnement. Cela ressemblerait à ceci :

S'abonner

Se désabonner

7. Envoi de votre premier message thématique

Dans cette étape, vous implémenterez le code côté serveur pour envoyer un message de sujet FCM.

Implémenter l'intégration côté serveur pour l'envoi d'un message de sujet

  1. Dans le code du serveur, accédez à FcmSender.java et localisez 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 de la forme : /topics/<Topic Name> . Par exemple, /topics/Technology .
  2. Dans les lignes suivantes, créez un nouvel objet message (similaire à celui défini dans la fonction sendMessageToFcmRegistrationToken ).
    • La différence sera qu'au lieu de définir le champ Token de l'objet message , vous définirez 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 activez l’appel à la fonction sendMessageToFcmTopic uniquement.

9a6aa08dd7c28898.png

Envoyer un message et valider la réception

  1. Avant d'envoyer le message de sujet, assurez-vous d'abord que votre instance d'application est abonnée au sujet auquel vous souhaitez envoyer.
    1. Cela peut être fait en appuyant sur la bascule correspondante. Par exemple:
    4668247408377712.png
  2. Vous pouvez maintenant envoyer votre message de 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
    c144721399f610fe.png
    1. Instance d'application en arrière-plan
    44efc7dfd57e8e9a.png
  4. Bonus : essayez de vous désinscrire du sujet auquel vous avez envoyé et renvoyez le message. Vous remarquerez que le message n’est pas transmis à l’instance d’application.

8. Envoi de votre premier message de condition de sujet

La fonctionnalité de condition de sujet vous permet d'envoyer des messages à une combinaison de sujets, ce qui vous permet de fournir une définition d'audience plus expressive.

Par exemple, dans notre application StockNews, envisagez la possibilité d'envoyer des messages à un groupe d'instances d'application abonnés à des sujets technologiques ou automobiles. Un tel cas peut se produire, par exemple, s’il y a un événement notable impliquant Waymo.

Topics vous permet d'exprimer votre combinaison sous la forme d'une expression booléenne à l'aide des opérateurs suivants

  • && : ET logique. Par exemple, 'Technology' in topics && 'Automotive' in topics : cible uniquement les instances d'application qui sont abonnées aux sujets technologiques et automobiles.
  • || : OU logique. Par exemple, 'Technology' in topics || 'Automotive' in topics : cible les instances d'application qui sont abonnés à des sujets technologiques ou automobiles.
  • () : Parenthèses pour le regroupement. Par exemple, 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) : cible uniquement les instances d'application qui sont abonnées aux sujets Technologie et aux sujets Automobile ou Énergie.

En savoir plus sur la façon de créer des demandes d'envoi pour utiliser cette fonctionnalité.

Implémenter l'intégration côté serveur pour l'envoi d'un message de condition de sujet

  1. De retour dans le code du serveur, accédez à FcmSender.java et localisez 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 le définir sur : 'Technology' in topics && 'Automotive' in topics .
  2. Dans les lignes suivantes, créez un nouvel objet message (similaire à celui défini dans la fonction sendMessageToFcmTopic ).
    1. La différence sera qu'au lieu de définir le champ Topic de l'objet, vous définirez le champ Condition .
    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 activez l’appel à la fonction sendMessageToFcmTopicCondition uniquement.

db9588d40d2a0da6.png

Envoyer le message et valider la réception

  1. Avant d'envoyer le message de sujet, assurez-vous d'abord que votre instance d'application satisfait à la condition de sujet spécifiée en l'abonnant aux sujets Technologie et Automobile.
  2. Vous pouvez maintenant envoyer votre message de sujet en exécutant la fonction main de FcmSender.java .
  3. Comme auparavant, 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 désormais vous désinscrire du sujet Technologie et renvoyer le message de condition du sujet. Vous devez remarquer que le message n'est pas reçu par l'instance d'application.

9. Récapitulatif

Faisons un bref récapitulatif de ce que vous avez appris jusqu'à présent.

  • Comment lancer un abonnement/désabonnement à un sujet à partir d'une instance d'application.
  • Envoi d'un message au sujet et vérification de la réception sur les instances d'application souscrites.
  • Envoi d'un message à une condition de sujet et vérification de la réception sur une instance d'application qui satisfait à la condition.

Dans la section suivante, vous découvrirez comment vous pouvez abonner/désabonner des instances d'application à des sujets sans avoir besoin d'instancier des appels du côté client.

c0dc20655d392690.gif

10. Gérer les abonnements aux sujets côté serveur

Jusqu'à présent, dans cet atelier de programmation, tous les appels d'abonnement et de désabonnement à un sujet étaient lancés à partir d'une instance d'application.

Cependant, dans certains cas d'utilisation, vous souhaiterez peut-être gérer les abonnements aux rubriques depuis le côté serveur. Par exemple, vous souhaiterez peut-être 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 apprendrez à utiliser le SDK d'administration Firebase pour abonner et désabonner un lot de jetons d'enregistrement FCM à un sujet en effectuant des appels depuis le serveur.

Implémenter l'abonnement côté serveur des jetons d'enregistrement FCM au sujet FCM

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

5d5709e7b3cbcb04.png

  1. Abonnons l'instance d'application au sujet Énergie. Pour ce faire, renseignez d'abord les données des deux champs suivants :
    1. registrationTokens : une liste de chaînes séparées par des virgules représentant les jetons d'enregistrement FCM pour lesquels vous souhaitez créer des abonnements à des sujets.
    2. topicName : le nom du sujet Énergie, c'est-à-dire /topics/Energy .
  2. Dans les prochaines lignes, implémentez l'appel, dans le sens suivant :
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Vous pouvez inspecter le TopicManagementResponse pour obtenir des statistiques de résultats de haut niveau. Par exemple, imprimer le nombre d'abonnements à des sujets créés avec succès à l'aide de getSuccessCount .
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. Enfin, dans la fonction main , activez les appels uniquement à la fonction subscribeFcmRegistrationTokensToTopic .

Créer un abonnement et envoyer un message de sujet

  1. À ce stade, vous êtes prêt à créer l’abonnement au sujet et à lui envoyer un message.
  2. Exécutez la fonction main de la classe FcmSubscriptionManager.java . Cela créera un abonnement au sujet.
  3. Maintenant, configurez le code pour envoyer le message. Comme avant,
    1. Dans FcmSender.java , recherchez la fonction sendMessageToFcmTopic .
    2. Définissez le topicName sur le sujet Energy, c'est-à-dire /topics/Energy .
    3. Créez un objet Message et ciblez-le sur le sujet à l'aide setTopic .
    4. Enfin, mettez à jour la méthode main pour activer uniquement la fonction sendMessageToFcmTopic .
  4. Exécutez la fonction main de FcmSender.java . Cela enverra le message à votre instance d'application et vous pourrez 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 le désabonnement côté serveur des jetons d'enregistrement FCM au sujet FCM

  1. Pour les désabonnements à des sujets côté serveur, utilisez cette API unsubscribeFromTopic . Vous ajouterez le code pertinent à 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 par l'envoi d'un message thématique vous sont laissées en exercice.

11. Félicitations

Félicitations, vous avez utilisé avec succès les sujets FCM pour envoyer des messages de multidiffusion à des sous-groupes de vos instances d'application. Cela vous aidera à simplifier votre capacité à atteindre vos utilisateurs en temps opportun avec un contenu pertinent.

947def3eb33b1e4a.gif

Et après?

Maintenant que vous avez terminé votre atelier de programmation, envisagez d'essayer des sujets pour d'autres plates-formes à l'aide des guides suivants :

Documents de référence