FCM トピックを使用した最初のマルチキャスト プッシュ メッセージ

1. はじめに

目標

この Codelab では、マルチプラットフォーム アプリをインストルメント化して、FCM トピックを使用してアプリ インスタンスのさまざまなサブグループに push メッセージをマルチキャストできるようにする方法を学びます。

完了すると、FCM インフラストラクチャを利用して、これらのサブグループを管理したり、サブグループに対する push メッセージをマルチキャストしたりできるようになります。

トピックの概要

トピックは、FCM インフラストラクチャでサポートされている方法で、アプリ インスタンスのサブグループにメッセージでアクセスします。

FCM には、メッセージの送信と、これらのトピックへのサブスクリプションの維持を行うための API が用意されています。アプリ インスタンスをトピックに関連付ける行為と分離する行為をそれぞれサブスクライブとサブスクライブ解除と呼びます。

トピックは、一般公開されているコンテンツに使用する必要があります。たとえば、最新の天気情報に関するメッセージなどです。ユーザー機密のメッセージを送信する場合は、Firebase Admin SDK を使用して複数のデバイス間でメッセージをマルチキャストします。

トピックベースのマルチキャストは、スループットに合わせて最適化されています。

ラボの内容

  • モバイルアプリからトピックにユーザーを登録(および登録解除)する方法。
  • トピックを使用してマルチキャスト プッシュ メッセージを送信する方法。
  • トピック条件を使用してトピックの組み合わせにメッセージを送信する方法。
  • サーバーサイドでトピックのサブスクリプションを管理し、一括でサブスクリプションと登録解除を行う方法。

作成するアプリの概要

  • トピックのサブスクライブ/サブスクライブ解除を行い、トピックに送信されるとメッセージを受信する Android アプリ。
  • Firebase Admin SDK を使用したサーバーサイドの統合。FCM API を介してトピック メッセージを送信するために使用されます。

必要なもの

  • Chrome などの任意のブラウザ。
  • Java アプリケーションを開発するための IntelliJ IDEA IDE。
    • インストール時に、Gradle のサポートを必ず有効にしてください。
  • Android アプリを開発するための Android Studio IDE。
  • Android アプリを実行するデバイス。次のいずれかです。
    • Android Emulator(Android Studio でのセットアップが必要です)。
    • パソコンに接続され、デベロッパー モードに設定された物理 Android デバイス。
  • Firebase プロジェクトを作成、管理するための Google アカウント。

2. 設定方法

コードを取得する

コマンドラインから GitHub リポジトリのクローンを作成します。

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

サンプルコードのクローンが fcm-codelab ディレクトリに作成されます。

cd fcm-codelab

この Codelab のスターター アプリは、fcm-topics-codelab ブランチの messaging ディレクトリにあります。次の手順でスターター コードに到達します。StockNewsAppStockNewsServer の 2 つのディレクトリがあります。前者にはスターター Android アプリが含まれ、後者にはスターター サーバー側のコードが含まれます。

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

この Codelab の完成版は messaging/fcm-topics-codelab/completed ディレクトリにあります。

Firebase プロジェクトを作成する

  1. Firebase コンソールで [プロジェクトを追加] をクリックし、Firebase プロジェクトに「StockNews」という名前を付けて [続行] をクリックします。注: Firebase プロジェクトのプロジェクト ID を覚えておいてください(または、編集アイコンをクリックして目的のプロジェクト ID を設定します)。

fc08f9a7808e4553.png

  1. Google アナリティクスの有効化はスキップできます。この Codelab の目的上、これは必要ありません。[続行] をクリックします。
  2. [プロジェクトの作成] をクリックします。

これで完了です。これで Firebase プロジェクトが作成されました。これで、プロジェクト名をクリックしてコンソールに移動できます。

3. プラットフォーム固有の Firebase アプリの構成

Firebase サポートを有効にするために必要なコード変更のほとんどは、作業中のプロジェクトにすでにチェックインされています。ただし、モバイル プラットフォームのサポートを追加するには、次の操作を行う必要があります。

  • Firebase プロジェクトに目的のプラットフォームを登録する
  • プラットフォーム固有の構成ファイルをダウンロードして、コードに追加します。

この Codelab では、Android Firebase アプリを追加します。

84e0b3199bef6d8a.pngAndroid の設定

  1. Firebase コンソールで、左側のナビゲーション バーの上部にある [設定] の歯車から [プロジェクトの設定] を選択し、[全般] ページの [マイアプリ] の下にある [Android] アイコンをクリックします。

次のようなダイアログが表示されます。8254fc299e82f528.png

  1. 指定すべき重要な値は Android パッケージ名です。com.ticker.stocknews に設定します。
    1. ここで指定するパッケージ名は、スターター StockNewsApp コードの AndroidManifest.xml 内で指定する名前と同じにする必要があります。デバイスを特定または変更する場合は、次の手順を行ってください。
      1. StockNewsApp ディレクトリでファイル app/src/main/AndroidManifest.xml を開きます。
      2. manifest 要素で、package 属性の文字列値を探します。この値は Android パッケージ名です。
  1. Firebase ダイアログで、コピーしたパッケージ名を [Android パッケージ名] フィールドに貼り付けます。
  2. このアプリはリリースされないため、この Codelab ではデバッグ用の署名証明書 SHA-1 は必要ありません。空欄のままにしておきます。
  3. [アプリを登録] をクリックします。
  4. 引き続き Firebase コンソールで、手順に沿って構成ファイル google-services.json をダウンロードします。
  5. 残りのセットアップ手順はスターター アプリのコードですでに構成されているため、スキップできます。Firebase コンソールのメインページにアプリが表示されます。
  6. ダウンロードした google-services.json ファイルを messaging/fcm-topics-codelab/starter/StockNewsApp/app ディレクトリにコピーします。

4. アプリをビルドして実行する

アプリの作業を実際に開始する準備が整いました。まず、アプリをビルドして実行します。

スターター アプリをインポートする

Android Studio を起動し、スターター コードのディレクトリから messaging/fcm-topics-codelab/starter/StockNewsApp をインポートします。

プロジェクトが読み込まれた後、ローカルで Git がトラッキングしていないというアラートが表示される場合があります。その場合は、右上の [Ignore] または [X] をクリックします。(変更を Git リポジトリにプッシュバックすることはありません)。

[Android] ビューの場合は、プロジェクト ウィンドウの左上に次のような画像が表示されます。([Project] ビューが表示されている場合、同じ内容を表示するにはプロジェクトを展開する必要があります)。

b574ea0089ee87c6.png

Android Studio で初めてバックグラウンドでプロジェクトをコンパイルする場合、数秒かかる場合があります。その間、Android Studio の下部にあるステータスバーにスピナーが表示されます。

4bc64eb3b99eb0ae.png

この作業が終了するまで待ってから、コードを変更することをおすすめします。これにより、Android Studio に必要なコンポーネントをすべて取り込むことができます。

また、「Retail for language changes to take effect?」のようなメッセージが表示された場合は、[Yes] を選択します。

エミュレータのセットアップ

Android Emulator のセットアップについてサポートが必要な場合は、アプリを実行するをご覧ください。

Android アプリのスターター コードを理解する

  • スターター コードは、最小限の機能と UI を備えた軽量の Android アプリです。
  • firebase-messaging SDK への依存関係は、すでに app/build.gradle ファイルに追加されています。

f04ff8f48d186dff.png

  • AndroidManifest.xml では、MESSAGING_EVENT コールバック ハンドラがすでに追加されています。
    • このハンドラ StockNewsMessagingService.java は、Firebase Cloud Messaging 関連のさまざまな機能を提供する FirebaseMessagingService クラスを拡張します。詳しくは、FirebaseMessagingService のドキュメントをご覧ください。b843c4d33ee53166.png
    88fad1960f4a6ff5.png
    • onNewToken 関数は、FCM 登録トークンが作成または更新されたときに呼び出されます。詳細については、トークンの生成をモニタリングするをご覧ください。
    • onMessageReceived 関数は、メッセージが受信され、アプリがフォアグラウンドにあるときに呼び出されます。今のところ、これは受信したメッセージをログに記録するだけです。
  • また、AndroidManifest.xml には StockNewsApplication という名前の Android Application クラスも用意されています。a4982a8731492dfc.pngccde692f7f68dc5a.png
    • このクラスは、アプリの起動時に最初にインスタンス化されます。
    • StockNewsApplication クラスの onCreate 関数に、FCM 登録トークンの作成呼び出しが追加されています。これにより、有効な FCM 登録トークンが生成され、ログに記録されます。
  • MainActivity.java は、銘柄カテゴリの選択肢を表示する RecyclerView を追加します。
  • SubscriptionAdapter.java は、在庫カテゴリ選択画面を描画する RecyclerView.Adapter を実装します。
    • 各銘柄カテゴリには名前と、その横にサブスクリプションの切り替えボタンがあります。
    • 切り替えボタンを変更すると、FCM トピックのサブスクリプション登録または登録解除の呼び出しが行われます。
    • これらの呼び出しは以降のセクションで実装します。
  • model/StockCategories.java クラスには、すべての在庫カテゴリとそれに関連するトピック名のリストが含まれます。

b32663ec4e865a18.png

スターター アプリを実行する

  1. Android デバイスをパソコンに接続するか、エミュレータを起動します。
  2. 上部のツールバーで、対象の Android デバイスまたはエミュレータを選択し、実行ボタンを押します。

5b27fc5b237e06b9.png

  1. アプリの UI は次のようになります。

ff5b1a1c53231c54.png

  1. アプリは FCM 登録トークンを作成してログに記録します。ただし、アプリの UI に変更はありません。
    1. 次のステップで使用するため、FCM 登録トークンをコピーして保存します。

927eb66bc909f36b.png

5. テスト メッセージを送信する

これで、前のステップで設定したアプリ インスタンスにテスト メッセージを送信できるようになりました。

スターター サーバーコードをインポートする

IntelliJ IDEA を起動し、messaging/fcm-topics-codelab/starter/StockNewsServer プロジェクトを開きます。

左側のナビゲーション バーのプロジェクト ビューは次のようになります。

da20711f6527dff6.png

必要な依存関係の pull を含め、IntellIj IDEA がプロジェクトをビルドするまでに数分かかることがあります。

サーバーのスターター コードを理解する

  • サーバーのスターター コードは、Gradle ベースの Java プロジェクトです。
  • build.gradle ファイルには、すでに firebase-admin SDK への依存関係が追加されています。この SDK は、さまざまな FCM メッセージ送信機能へのアクセスを提供します。

650fc733298588f8.png

  • 最後に、次の 2 つのクラスがあります。
    • FcmSender.java: このクラスには次のメソッドが含まれます。
      • initFirebaseSDK: firebase-admin SDK を初期化します。
      • sendMessageToFcmRegistrationToken: FCM 登録トークンにメッセージを送信します。
      • sendMessageToFcmTopic: FCM トピックにメッセージを送信します。
      • sendMessageToFcmTopicCondition: FCM トピック条件にメッセージを送信します。
    • FcmSubscriptionManager.java: このクラスには、サーバー側からトピックのサブスクリプションを管理できるメソッドが含まれます。
      • initFirebaseSDK: firebase-admin SDK を初期化します。
      • subscribeFcmRegistrationTokensToTopic: FCM 登録トークンを FCM トピックにサブスクライブします。
      • unsubscribeFcmRegistrationTokensFromTopic: FCM トピックから FCM 登録トークンのサブスクライブを解除します。

サーバーコードの設定

  1. まず、firebase-admin SDK が FCM API の呼び出しを承認できるように、Firebase サービス アカウントを設定する必要があります。
    1. Firebase コンソールに移動し、左側のナビゲーション バーの [プロジェクトの概要] の横にある歯車アイコンをクリックして、[プロジェクトの設定] を選択します。8c2108d4d7c915e9.png
    2. 設定ページで [サービス アカウント] を選択し、[サービス アカウントを作成] をクリックします。84b128cc5dac0a85.png
    3. 次に、[Generate new private key] ボタンをクリックすると、鍵ファイルの自動ダウンロードが開始されます。
    4. キーファイルの名前を service-account.json に変更し、messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources フォルダにコピーします。
    5. FcmSender.javaFcmSubscriptionManager.java はどちらも、次のコードを使用して、クラスパスから service-account.json ファイルを読み込みます。8dffbee658e0bdd.png
  2. この時点で、サーバーコードの準備ができています。上部のメニューバーから [Run Build] -> [Build Project] を選択します。

テスト メッセージの送信

  1. FcmSender.javasendMessageToFcmRegistrationToken 関数を見つけ、スターター アプリを実行するでコピーした FCM 登録トークンを registrationToken フィールドに挿入します。
  2. main 関数で、sendMessageToFcmRegistrationToken 関数だけをコメント化解除し、[実行] をクリックしてコードを実行します。
    1. FCM 登録トークンが message オブジェクトの Token フィールドに設定されていることを確認します。
    2. さらに、FirebaseMessaging インターフェースの send API をどのように使用しているかにも注目してください。

52e4a3ec3f816473.png

  1. これにより、前の手順で設定したアプリ インスタンスにメッセージが送信されます。
  2. アプリ インスタンスがフォアグラウンドにある場合、ログに記録されたメッセージ コンテンツが表示されます。

d3540ec1089f97dd.png

  1. アプリ インスタンスがバックグラウンドで動作しているときは、通知トレイにメッセージが表示されます。

31203deca59c03fe.png

Firebase Admin SDK を使用してアプリ インスタンスにメッセージを送信しました。詳しくは、サーバーでの Firebase Admin SDK の使用をご覧ください。

6. トピックの登録と登録解除を実装する

このステップでは、Android アプリの [株価情報カテゴリ] の切り替えボタンで、トピックの登録と登録解除のアクションを実装します。

アプリのユーザーが特定の株式カテゴリのスイッチを切り替えると、トピックの登録または登録解除が行われます。

コードを確認する

  • Android アプリコードの SubscriptionAdapter.java クラスに移動し、RecyclerViewViewHolder クラスを見つけます。

6c0614199e684f6.png

  • クラス コンストラクタは、setOnCheckedChangeListener を使用してサブスクリプション切り替え用のリスナーをセットアップします。
  • 切り替えの切り替えに応じて、subscribeToStockCategory メソッドと unsubscribeFromStockCategory メソッドを呼び出すことで、サブスクライブとサブスクライブのアクションをそれぞれ実行します。
  • setData メソッドは、RecyclerView アダプターの onBindViewHolder によって呼び出され、ViewHolder を適切な在庫カテゴリにバインドします。

トピック サブスクリプションを実装する

  1. subscribeToStockCategory メソッドで、FirebaseMessaging オブジェクトの subscribeToTopic API の呼び出しを実装します。コードは次のようになります。
   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();
          });
    }

トピックの登録解除を実装する

  1. 同様に、else 条件で unsubscribeFromTopic API の呼び出しを実装します。次のような行です。
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();
          });
    }

試してみる

  1. アプリを実行し、株式カテゴリ オプションを切り替えて、Subscribe アクションと Unsubscribe アクションを実行します。これは次のようになります。

登録

登録を解除

7. 最初のトピック メッセージを送信する

このステップでは、FCM トピック メッセージを送信するサーバー側のコードを実装します。

トピック メッセージを送信するためのサーバーサイドの統合を実装する

  1. サーバーコードで FcmSender.java に移動し、sendMessageToFcmTopic という名前のメソッドを見つけます。

56381dd1b40cde9c.png

  1. 1 行目に、メッセージの送信先の FCM トピックを指定します。
    • これは、/topics/<Topic Name> という形式の文字列です。例: /topics/Technology
  2. 次の行で新しい message オブジェクトを作成します(sendMessageToFcmRegistrationToken 関数で定義されたオブジェクトと同様)。
    • 違いは、message オブジェクトの Token フィールドを設定するのではなく、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. 次に、メッセージを送信するための FirebaseMessaging インスタンスの呼び出しを追加します(sendMessageToFcmRegistrationToken 関数で行われる send の呼び出しと同じです)。
FirebaseMessaging.getInstance().send(message);
  1. 最後に、main 関数を更新し、sendMessageToFcmTopic 関数の呼び出しのみを有効にします。

9a6aa08dd7c28898.png

メッセージを送信して領収書を確認する

  1. トピック メッセージを送信する前に、まずアプリ インスタンスが送信先のトピックにサブスクライブされていることを確認します。
    1. これを行うには、対応する切り替えスイッチを切り替えます。次に例を示します。
    4668247408377712.png
  2. これで、FcmSender.javamain 関数を実行して、トピック メッセージを送信できるようになりました。
  3. 前と同じように、アプリ インスタンスでメッセージの受信をモニタリングできます。
    1. フォアグラウンドのアプリ インスタンス
    c144721399f610fe.png
    1. バックグラウンドのアプリ インスタンス
    44efc7dfd57e8e9a.png
  4. 参考: 送信したトピックの登録を解除して、メッセージを再送信してみてください。メッセージがアプリ インスタンスに配信されていないことがわかります。

8. 最初のトピック条件メッセージを送信する

トピックの条件機能を使用すると、トピックの組み合わせにメッセージを送信できるため、より表現力の高いオーディエンスを定義できます。

たとえば、StockNews アプリでは、「テクノロジー」または「自動車」のトピックのいずれかにサブスクライブしているアプリ インスタンスのグループにメッセージを送信する可能性を検討します。このようなケースは、たとえば Waymo に関連する注目すべき事件がある場合に発生することがあります。

Topics では、次の演算子を使用して組み合わせをブール式の形式で表現できます

  • && : 論理 AND。たとえば、'Technology' in topics && 'Automotive' in topics では、「テクノロジー」トピックと「自動車」トピックの両方に登録されているアプリ インスタンスのみをターゲットにします。
  • || : 論理 OR。例: 'Technology' in topics || 'Automotive' in topics - テクノロジーまたは自動車のいずれかのトピックに登録されているアプリ インスタンスをターゲットにします。
  • () : グループ化用のかっこ。たとえば、'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - テクノロジーと、自動車またはエネルギーのトピックに登録されているアプリ インスタンスのみをターゲットにします。

この機能を使用するための送信リクエストを作成する方法をご確認ください。

トピック条件メッセージを送信するためのサーバーサイドの統合の実装

  1. サーバーコードに戻り、FcmSender.java に移動して、sendMessageToFcmTopicCondition という名前のメソッドを見つけます。

3719a86c274522cf.png

  1. 1 行目の topicCondition 変数に、メッセージの送信先のトピック条件を指定します。'Technology' in topics && 'Automotive' in topics に設定できます。
  2. 次の行で新しい message オブジェクトを作成します(sendMessageToFcmTopic 関数で定義されたオブジェクトと同様)。
    1. 違いは、オブジェクトの Topic フィールドを設定するのではなく、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. 次に、メッセージを送信するための FirebaseMessaging インスタンスの呼び出しを追加します(sendMessageToFcmTopic 関数で行われる send の呼び出しと同じです)。
FirebaseMessaging.getInstance().send(message);
  1. 最後に、main 関数を更新し、sendMessageToFcmTopicCondition 関数の呼び出しのみを有効にします。

db9588d40d2a0da6.png

メッセージを送信して領収書を確認する

  1. トピック メッセージを送信する前に、アプリ インスタンスをテクノロジーと自動車の両方のトピックにサブスクライブして、アプリ インスタンスが指定されたトピック条件を満たしていることを確認します。
  2. これで、FcmSender.javamain 関数を実行して、トピック メッセージを送信できるようになりました。
  3. 以前と同様に、アプリ インスタンスでメッセージの受信を確認できるはずです。
    1. フォアグラウンドのアプリ インスタンス
    6f612ace15aa6515.png
    1. バックグラウンドのアプリ インスタンス
    78044a56ac2359cb.png
  4. 参考: テクノロジー トピックの登録を解除し、トピック条件メッセージを再送信できるようになりました。メッセージがアプリ インスタンスで受信されていないことがわかります。

9. まとめ

ここまでに学習した内容を簡単に復習しましょう。

  • アプリ インスタンスからトピックのサブスクリプションまたはサブスクリプションの解除を開始する方法。
  • トピックにメッセージを送信し、サブスクライブしたアプリ インスタンスで受信を確認する。
  • トピックにメッセージを送信し、その条件を満たすアプリ インスタンスで受信を確認する。

次のセクションでは、クライアントサイドからの呼び出しをインスタンス化することなく、トピックに対してアプリ インスタンスをサブスクライブまたはサブスクライブ解除する方法について説明します。

c0dc20655d392690.gif

10. サーバーサイドからトピック サブスクリプションを管理する

これまで、この Codelab では、トピックのサブスクリプションと登録解除の呼び出しはすべて、アプリ インスタンスから開始されていました。

ただし、ユースケースによっては、トピックのサブスクリプションをサーバーサイドから管理したい場合があります。たとえば、アプリのロールアウトを待たずに、既存のユーザーベースのサブグループを新しいトピックにサブスクライブできます。

このセクションでは、Firebase Admin SDK を使用して、サーバー側から呼び出しを行うことで、トピックに対する FCM 登録トークンのバッチのサブスクライブとサブスクライブ解除を行う方法を学習します。

FCM トピックへの FCM 登録トークンのサーバー側サブスクリプションを実装する

  1. サーバーコードで FcmSubscriptionManager.java クラスに移動します。subscribeFcmRegistrationTokensToTopic という名前のメソッドを見つけます。subscribeToTopic API の呼び出しはここで実装します。

5d5709e7b3cbcb04.png

  1. アプリ インスタンスをエネルギー トピックにサブスクライブします。それには、まず次の 2 つのフィールドにデータを指定します。
    1. registrationTokens: トピック サブスクリプションを作成する FCM 登録トークンを表す文字列のカンマ区切りリスト。
    2. topicName: エネルギー トピックのトピック名(例: /topics/Energy)。
  2. 次の数行で、これらの行に沿って呼び出しを実装します。
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic(
        registrationTokens, topicName);
  1. TopicManagementResponse で結果の概要データを調べることができます。たとえば、getSuccessCount を使用して、正常に作成されたトピック サブスクリプションの数を出力するなどです。
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
  1. 最後に、main 関数で、subscribeFcmRegistrationTokensToTopic 関数の呼び出しのみを有効にします。

サブスクリプションを作成してトピック メッセージを送信する

  1. これで、トピック サブスクリプションを作成してメッセージを送信する準備が整いました。
  2. FcmSubscriptionManager.java クラスの main 関数を実行します。これにより、トピック サブスクリプションが作成されます。
  3. 次に、メッセージを送信するコードを設定します。以前と同様に、
    1. FcmSender.java で、sendMessageToFcmTopic 関数を見つけます。
    2. topicName をエネルギー トピックに設定します。例:/topics/Energy
    3. Message オブジェクトを作成し、setTopic を使用してトピックをターゲットとします。
    4. 最後に、main メソッドを更新して、sendMessageToFcmTopic 関数のみを有効にします。
  4. FcmSender.javamain 関数を実行します。これにより、メッセージがアプリ インスタンスに送信され、次のようにアプリ内で確認できます。
    1. フォアグラウンドのアプリ インスタンス
    40ab6cf71e0e4116.png
    1. バックグラウンドのアプリ インスタンス
    8fba81037198209e.png

FCM トピックへの FCM 登録トークンのサーバーサイド登録解除を実装する

  1. サーバーサイドのトピックの登録解除には、こちらの unsubscribeFromTopic API を使用します。関連するコードを FcmSubscriptionManager.java クラスの unsubscribeFcmRegistrationTokensFromTopic 関数に追加します。

8d9e8ea9d34016bd.png

  1. サーバーサイドのサブスクリプション解除コードを実装し、トピック メッセージを送信してその影響を検証する作業は、演習として残しておきます。

11. 完了

これで、FCM トピックを使用してアプリ インスタンスのサブグループにマルチキャスト メッセージを送信できました。これにより、関連性の高いコンテンツでユーザーにタイムリーにリーチする機能が簡素化されます。

947def3eb33b1e4a.gif

次のステップ

Codelab を完了したら、次のガイドに沿って他のプラットフォームのトピックを試すことを検討してください。

リファレンス ドキュメント