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 thèmes 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 ces 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 respectivement appelées "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.
  • 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.
  • 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 finale 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é, lisez 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 de démarrage StockNewsApp. 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épart

Démarrez Android Studio et importez messaging/fcm-topics-codelab/starter/StockNewsApp à partir du 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
    • La fonction onNewToken est appelée lorsque le jeton d'enregistrement FCM est créé ou actualisé. Pour en savoir plus, consultez Surveiller la génération de jetons.
    • 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é. Un jeton d'enregistrement FCM valide sera généré et consigné.
  • 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 ou émulateur Android 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 lors des prochaines étapes.

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 : envoie 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 sujet 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 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 classpath à 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, décommentez uniquement 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 de l'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 sujet

  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 thème

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 l'appel que pour la fonction sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Envoyer un message et valider la réception

  1. Avant d'envoyer le message au thème, 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 ou de désactiver 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 du thème auquel vous avez envoyé le message, puis renvoyez-le. Vous constaterez que le message n'est pas remis à l'instance d'application.

8. Envoyer 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 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 pour le 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".

Pour en savoir plus sur la création de demandes d'envoi pour utiliser cette fonctionnalité, consultez la documentation.

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 le définir 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, au lieu de définir le champ Topic de l'objet, vous définissez 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 n'activez l'appel que pour 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 l'instance d'application ne reçoit pas le message.

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
  • Envoyez un message au sujet et vérifiez sa réception sur les instances d'application abonnées.
  • Envoyez un message à un sujet Condition et vérifiez la réception sur une instance d'application qui remplit la condition.

Dans la section suivante, vous allez apprendre à 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 de l'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 au sujet 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 sujet "É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 thèmes 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 thématique

  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 à un sujet FCM

  1. Pour les désabonnements aux thèmes côté serveur, utilisez cette 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 utilisé les rubriques FCM pour envoyer des messages multicast à des sous-groupes d'instances de votre application. Vous pourrez ainsi toucher vos utilisateurs plus facilement et plus rapidement 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