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

1. はじめに

目標

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

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

Topics の概要

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

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

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

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

ラボの内容

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

作成するアプリの概要

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

必要なもの

  • Chrome などの任意のブラウザ。
  • IntelliJ IDEA IDE(Java アプリケーション開発用)。
    • インストールの際には、必ず 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 の下部にあるステータスバーにスピナーが表示されます。

4bc64eb3b99eb0ae.png

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

また、「Reboot 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

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

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

  • サーバー スターター コードは 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 コンソールに移動し、左側のナビゲーション バーで [Project Overview] の横にある歯車アイコンをクリックして、[Project settings] を選択します。8c2108d4d7c915e9.png
    2. 設定ページで [サービス アカウント] を選択し、[サービス アカウントを作成] をクリックします。84b128cc5dac0a85.png
    3. [新しい秘密鍵を生成] ボタンをクリックすると、鍵ファイルの自動ダウンロードが開始されます。
    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.java で、sendMessageToFcmRegistrationToken 関数を見つけて、スターター アプリを実行するセクションでコピーした 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 アプリの [Stock Category] 切り替えボタンで、トピックのサブスクリプションとサブスクリプション解除のアクションを実装します。

アプリユーザーが特定の株式カテゴリの切り替えを切り替えると、トピック サブスクリプションまたはサブスクリプション解除呼び出しが行われます。

コードを確認する

  • 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 - Technology Topics と Automotive 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. アプリ インスタンスを Energy トピックにサブスクライブしましょう。それには、まず次の 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 を Energy トピック(例:/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 を修了したので、以下のガイドを使用して他のプラットフォームのトピックを試してみることをおすすめします。

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