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

1. Introduction

Buts

Dans cet atelier de programmation, vous apprendrez à instrumenter votre application multiplateforme afin de pouvoir multidiffuser des messages push à divers sous-groupes de vos instances d'application à l'aide de rubriques FCM.

Une fois terminé, vous pourrez tirer parti de l'infrastructure FCM pour gérer ces sous-groupes ainsi que les messages push multicast sur les sous-groupes.

Aperçu des sujets

Les sujets sont 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 rubriques. L'acte d'associer et de dissocier une instance d'application à un sujet est appelé respectivement s'abonner et se désabonner

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

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

Ce que vous apprendrez

  • Comment abonner (et désabonner) des utilisateurs à des sujets à partir d'une application mobile.
  • Comment envoyer des messages push multidiffusion à l'aide de sujets.
  • Comment envoyer des messages à une combinaison de rubriques à l'aide de conditions de rubrique.
  • Comment gérer les abonnements aux rubriques côté serveur et effectuer des abonnements et des désabonnements en masse.

Ce que tu vas construire

  • 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 défini en mode développeur.
  • Un compte Google pour créer et gérer votre projet Firebase.

2. Mise en place

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 pour ce laboratoire de programmation se trouve dans le répertoire messaging de la branche fcm-topics-codelab . Suivez les étapes suivantes pour accéder au code de démarrage. Il contient deux répertoires StockNewsApp et StockNewsServer . Le premier contient l'application Android de démarrage et le second a 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 : Souvenez-vous de 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 entrer dans 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à intégrées au projet sur lequel vous travaillez. Cependant, pour ajouter la prise en charge des plates-formes mobiles, vous devez :

  • Enregistrez la plate-forme 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 de gauche dans le rouage 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 . Réglez-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 du 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 la 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 référentiel 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 un spinner dans la barre d'état en bas d'Android Studio :

4bc64eb3b99eb0ae.png

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

De plus, si vous obtenez une invite disant "Recharger pour que les changements 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, 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 interface utilisateur minimales.
  • Une dépendance au SDK firebase-messaging est déjà ajoutée au fichier app/build.gradle .

f04ff8f48d186dff.png

  • Dans le 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 de 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.
  • En outre, dans AndroidManifest.xml , une classe Application Android est également fournie, nommée StockNewsApplication . 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 la catégorie de stock.
    • Chaque catégorie d'actions a un nom et une bascule d'abonnement à côté.
    • Changer la bascule devrait faire un appel d'abonnement/de désabonnement au sujet FCM.
    • Vous implémenterez ces appels dans les prochaines sections.
  • La classe model/StockCategories.java contient une liste de toutes les catégories de stock et leurs noms de sujet associés.

b32663ec4e865a18.png

Exécutez l'application de démarrage

  1. Connectez votre appareil Android à votre ordinateur ou lancez 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 de 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 cela peut prendre quelques minutes à IntellIj IDEA pour créer votre projet, 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 du SDK firebase-admin qui lui a été ajouté. Ce SDK permet d'accéder à 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 : envoie un message à 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 : abonner un ou plusieurs jetons d'enregistrement FCM à un sujet FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : désabonner le(s) jeton(s) d'enregistrement FCM d'un sujet FCM.

Configuration du code 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 représentant une roue dentée à côté de la vue d'ensemble du projet dans la barre de navigation de gauche, puis 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 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 tous deux 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 menus 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é à partir de 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, notez 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 de l'application est au premier plan, vous devriez voir le contenu du message enregistré.

d3540ec1089f97dd.png

  1. Et lorsque l'instance de l'application est en arrière-plan, vous observez le message apparaître dans la barre des 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. Implémenter l'abonnement/désabonnement au sujet

Dans cette étape, vous implémenterez des actions d'abonnement et de désabonnement au sujet, sur la bascule de la catégorie 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é.

Réviser 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 la bascule d'abonnement à l'aide de setOnCheckedChangeListener .
  • Selon le basculement 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 le onBindViewHolder de l'adaptateur RecyclerView pour lier le ViewHolder à la catégorie de stock appropriée.

Implémenter l'abonnement aux rubriques

  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();
          });
    }

Implémenter la désinscription des sujets

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

Dans cette étape, vous implémenterez du 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. Dans 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 le 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 avec un retournement de 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ésabonner du sujet auquel vous avez envoyé et renvoyez le message. Vous observerez que le message n'est pas remis à l'instance de l'application.

8. Envoi de votre premier message de condition de sujet

La fonction de condition de rubrique vous permet d'envoyer des messages à une combinaison de rubriques vous permettant 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 qui sont abonnées aux sujets Technologie ou Automobile. Un tel cas peut se produire, par exemple, s'il y a un événement notable impliquant Waymo.

Les sujets vous permettent d'exprimer votre combinaison sous la forme d'une expression booléenne en utilisant les opérateurs suivants

  • && : ET logique. Par exemple, 'Technology' in topics && 'Automotive' in topics : cible uniquement les instances d'application qui sont abonnées à la fois aux rubriques Technologie et Automobile.
  • || : OU logique. Par exemple, 'Technology' in topics || 'Automotive' in topics : cible les instances d'application qui sont abonnées aux rubriques Technologie ou Automobile.
  • () : 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 à la technologie et aux sujets relatifs à l'automobile ou à l'énergie.

En savoir plus sur la création de demandes d'envoi pour l'utilisation de 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, sautez dans FcmSender.java et localisez la méthode nommée sendMessageToFcmTopicCondition .

3719a86c274522cf.png

  1. Dans la première ligne, pour la variable topicCondition , indiquez la condition de rubrique à 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 rubrique, assurez-vous d'abord que votre instance d'application satisfait à la condition de rubrique spécifiée en vous abonnant à la fois aux rubriques 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ésabonner du sujet Technologie et renvoyer le message de condition du sujet. Vous devez observer que le message n'est pas reçu par l'instance de l'application.

9. Récapitulatif

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

  • Comment initier 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 abonnées.
  • 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 apprendrez comment vous pouvez abonner/désabonner des instances d'application à des sujets sans avoir à instancier des appels du côté client.

c0dc20655d392690.gif

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

Jusqu'à présent, dans cet atelier de programmation, tous les appels d'abonnements et de désabonnements aux rubriques é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 à partir du 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 Firebase Admin pour vous abonner et vous désabonner d'un lot de jetons d'enregistrement FCM à un sujet en passant des appels depuis le serveur.

Mettre en œuvre l'abonnement côté serveur des jetons d'enregistrement FCM à la rubrique FCM

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

5d5709e7b3cbcb04.png

  1. Inscrivons l'instance de l'application au sujet Énergie. Pour ce faire, fournissez d'abord des données pour les 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 aux rubriques.
    2. topicName : le nom du sujet pour le sujet Énergie, c'est-à-dire /topics/Energy .
  2. Dans les prochaines lignes, implémentez l'appel, le long de ces lignes :
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. Vous pouvez inspecter TopicManagementResponse pour certaines statistiques de résultats de haut niveau. Comme l'impression du 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. Semblable à avant,
    1. Dans FcmSender.java , recherchez la fonction sendMessageToFcmTopic .
    2. Définissez topicName sur la rubrique Énergie, 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

Mettre en œuvre la désinscription côté serveur des jetons d'enregistrement FCM à la rubrique FCM

  1. Pour les désinscriptions de sujets côté serveur, utilisez cette API unsubscribeFromTopic . Vous ajouterez le code correspondant à 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 de sujet, vous sont laissées en exercice.

11. Félicitations

Félicitations, vous avez utilisé avec succès les rubriques 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