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 diffuser des messages push vers différents sous-groupes de vos instances d'application à l'aide de sujets FCM.

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

Présentation des sujets

Les sujets sont un moyen compatible avec l'infrastructure FCM de toucher des sous-groupes de vos instances d'application avec des messages.

FCM fournit les API permettant d'envoyer des messages et de gérer des abonnements à ces sujets. L'association et la dissociation d'une instance d'application à un sujet sont appelées abonnement et désabonnement, respectivement.

Les thèmes doivent être utilisés pour les contenus accessibles au public. Par exemple, les messages sur les bulletins météo. Si vous souhaitez envoyer des messages sensibles à l'utilisateur, utilisez le SDK Firebase Admin pour multicaster des messages sur plusieurs appareils.

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

Points abordés

  • Abonner (et désabonner) des utilisateurs à des sujets à partir d'une application mobile
  • Envoyer des messages push multicast à l'aide de sujets
  • Envoyer des messages à une combinaison de sujets à l'aide de conditions de sujet
  • Gérer les abonnements aux sujets côté serveur, et effectuer des abonnements et des désabonnements groupés

Objectifs de l'atelier

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

Prérequis

  • Un navigateur de votre choix, tel que Chrome
  • IDE IntelliJ IDEA pour le développement d'applications Java.
    • Veillez à activer la prise en charge de Gradle lors de l'installation.
  • IDE Android Studio pour développer des applications Android
  • Un appareil pour exécuter l'application Android. Soit:
    • Android Emulator. (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 finalisé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, puis cliquez sur "Continuer". Remarque: Mémorisez l'ID de votre projet Firebase (ou cliquez sur l'icône Modifier pour définir l'ID de votre projet).

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 Create Project (Créer un projet).

Félicitations ! Vous venez de créer votre projet Firebase. Vous pouvez maintenant 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 compatibilité Firebase sont déjà vérifiées dans le projet sur lequel vous travaillez. Toutefois, pour que les plates-formes mobiles soient prises en charge, vous devez:

  • Enregistrer la plate-forme souhaitée dans 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 Firebase pour Android.

84e0b3199bef6d8a.pngConfigurer Android

  1. Dans la console Firebase, sélectionnez Project Settings (Paramètres du projet) en haut de la barre de navigation de gauche dans l'icône en forme de roue dentée des paramètres, puis cliquez sur l'icône Android sous Your apps (Vos applications) sur la page General (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 indiqué ici doit être identique à celui indiqué dans le AndroidManifest.xml de votre code de démarrage StockNewsApp. Si vous souhaitez la localiser ou la 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 apparaît 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 créer et exécuter l'application.

Importer l'application de démarrage

Lancez 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 également s'afficher, indiquant que Git ne suit pas toutes vos modifications locales. Vous pouvez cliquer sur Ignorer. ou "X" en haut à droite. (Vous ne transmettrez pas vos modifications au dépôt Git.)

Dans l'angle supérieur gauche de la fenêtre du projet, un message semblable à l'image ci-dessous devrait s'afficher si vous êtes dans la vue Android. (Si vous êtes dans la vue Project (Projet), vous devez développer le projet pour afficher 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 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. Pour en savoir plus, consultez la documentation 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 exécutée au premier plan. Actuellement, il se contente de consigner le message reçu.
  • De plus, dans AndroidManifest.xml, une classe Android Application 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ère un jeton d'enregistrement FCM valide et le consigne dans un journal.
  • MainActivity.java ajoute RecyclerView, qui affiche les options 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 est associée à un nom et à un bouton d'activation/de désactivation d'abonnement.
    • La modification du bouton doit déclencher un appel d'abonnement/de désabonnement à un sujet FCM.
    • Vous allez implémenter ces appels dans les sections suivantes.
  • La classe model/StockCategories.java contient une liste de toutes les catégories d'actions et les noms de sujets 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ésente comme suit:

ff5b1a1c53231c54.png

  1. L'application crée un jeton d'enregistrement FCM et le consigne. Toutefois, rien ne changera dans l'interface utilisateur de l'application.
    1. Copiez et enregistrez le jeton d'enregistrement FCM, car il sera utilisé 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 lors de la dernière étape.

Importer le code du serveur de démarrage

Lancez 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, y compris l'extraction des dépendances requises, peut prendre quelques minutes.

Comprendre le code de démarrage du serveur

  • Le code de démarrage du serveur est un projet Java basé sur Gradle.
  • La dépendance au SDK firebase-admin est déjà ajoutée au fichier build.gradle. 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 de note suivantes:
      • initFirebaseSDK : initialise le SDK firebase-admin.
      • sendMessageToFcmRegistrationToken: envoie un message à un jeton d'enregistrement FCM.
      • sendMessageToFcmTopic : envoyer un message à un sujet FCM.
      • sendMessageToFcmTopicCondition: envoie un message à une condition de sujet FCM.
    • FcmSubscriptionManager.java: cette classe contient des méthodes permettant de gérer les abonnements à des sujets côté serveur.
      • initFirebaseSDK : initialise le SDK firebase-admin.
      • subscribeFcmRegistrationTokensToTopic : abonnez le ou les jetons d'enregistrement FCM à un sujet FCM.
      • unsubscribeFcmRegistrationTokensFromTopic : désabonner le ou les jetons d'enregistrement FCM d'un sujet FCM.

Configurer le code du serveur

  1. Nous devons d'abord 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 maintenant 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 classpath à l'aide du code suivant. 8dffbee658e0bdd.png
  2. À ce stade, le code du serveur est prêt. Exécutez Build -> Build Project (Compilation -> Créer un projet) dans la barre de menu supérieure.

Envoyer un message de test

  1. Dans FcmSender.java, recherchez 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éscommentez uniquement la fonction sendMessageToFcmRegistrationToken, puis cliquez sur "Run" (Exécuter) pour exécuter le code.
    1. Notez que le jeton d'enregistrement FCM est défini dans le champ Token de l'objet message.
    2. Notez également la façon dont 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 exécutée au premier plan, le contenu du message doit s'afficher.

D3540ec1089f97dd.png

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

31203deca59c03fe.png

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

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

Au cours de cette étape, vous allez implémenter des actions d'abonnement et de désabonnement à un sujet via le bouton d'activation de la catégorie "Actions" de l'application Android.

Lorsqu'un utilisateur d'une application active ou désactive l'option d'une catégorie d'actions spécifique, un appel d'abonnement ou de désabonnement à un sujet est effectué.

Examiner le code

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

6c0614199e684f6.png

  • Le constructeur de la classe configure un écouteur pour le bouton d'activation/de désactivation de l'abonnement à l'aide de setOnCheckedChangeListener.
  • Selon le bouton d'activation, 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 boursière appropriée.

Implémenter un abonnement à un sujet

  1. Dans la méthode subscribeToStockCategory, vous allez implémenter l'appel de 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 résiliation de l'abonnement à un sujet

  1. De même, dans la condition "else", vous allez implémenter l'appel de l'API unsubscribeFromTopic. Voici un exemple :
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 d'actions pour exécuter des actions d'abonnement et de désabonnement. Celle-ci se présente alors sous la forme suivante :

S'abonner

Se désabonner

7. Envoi de votre premier message thématique

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

Implémenter l'intégration côté serveur pour envoyer des messages 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 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).
    • 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 uniquement vers la fonction sendMessageToFcmTopic.

9a6aa08dd7c28898.png

Envoyer un message et valider la réception

  1. Avant d'envoyer le message du sujet, assurez-vous que votre instance d'application est abonnée au sujet auquel vous souhaitez envoyer le message.
    1. Pour ce faire, il vous suffit d'appuyer sur le bouton correspondant. Exemple :
    4668247408377712.png
  2. Vous pouvez maintenant envoyer votre message de sujet en exécutant la fonction main de FcmSender.java.
  3. Comme précédemment, vous devriez pouvoir observer la confirmation de 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é le message, puis renvoyez-le. Vous constaterez que le message n'est pas distribué à l'instance d'application.

8. Envoyer votre premier message de condition de sujet

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 une audience plus expressive.

Par exemple, dans notre application StockNews, envisagez d'envoyer des messages à un groupe d'instances d'application abonnées aux sujets Technologies ou Automotive. Cela peut se produire, par exemple, en cas d'é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 :

  • && : Opérateur logique AND. Par exemple, 'Technology' in topics && 'Automotive' in topics : ne cible que les instances d'application abonnées aux thèmes "Technologie" et "Automobile".
  • || : OU 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".

Découvrez comment créer des requêtes d'envoi pour utiliser cette fonctionnalité.

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

  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 la 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 consistera à définir le champ Condition au lieu de définir le 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 activez l'appel uniquement vers la fonction sendMessageToFcmTopicCondition.

Db9588d40d2a0da6.png

Envoyer le message et valider la réception

  1. Avant d'envoyer le message de sujet, assurez-vous que votre instance d'application remplit la condition de sujet spécifiée en l'abonnant aux sujets "Technologie" et "Automotive".
  2. Vous pouvez désormais envoyer votre message de sujet en exécutant la fonction main de FcmSender.java.
  3. Comme précédemment, vous devriez pouvoir observer la confirmation de 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 à présent vous désabonner du sujet "Technologie" et renvoyer le message contenant la condition du sujet. Vous devriez constater que le message n'est pas reçu par l'instance de l'application.

9. Récapitulatif

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

  • Lancer un abonnement ou un 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'applications auxquelles vous êtes abonné
  • Envoyer un message à une condition de sujet et vérifier la réception sur une instance d'application qui répond à la condition.

Dans la section suivante, vous allez découvrir comment abonner/désabonner des instances d'application à des sujets sans avoir à instancier des appels 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 aux sujets sont lancés à partir d'une instance d'application.

Toutefois, dans certains cas d'utilisation, vous souhaiterez peut-être gérer les abonnements à des sujets côté serveur. Par exemple, vous pouvez 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 un abonnement côté serveur de jetons d'enregistrement FCM dans le 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 de l'API subscribeToTopic ici.

5d5709e7b3cbcb04.png

  1. Abonnez l'instance de l'application au sujet "Energy". Pour ce faire, vous devez d'abord 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 sujets.
    2. topicName: nom du thème "Énergie", par exemple /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, imprimer 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 que les appels à la fonction subscribeFcmRegistrationTokensToTopic.

Créer un abonnement et envoyer un message de discussion

  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. Un abonnement au sujet est créé.
  3. À présent, 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", /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 le désabonnement des jetons d'enregistrement FCM côté serveur dans le sujet FCM

  1. Pour les désabonnements à un sujet 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 de sujet sont un exercice pour vous.

11. Félicitations

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

947def3eb33b1e4a.gif

Étape suivante

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

Documentation de référence