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 ディレクトリにあります。スターター コードにアクセスする手順は次のとおりです。2 つのディレクトリ StockNewsAppStockNewsServer が含まれています。前者にはスターター 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 に取り込むことができます。

また、「reload for language changes to take effect?」というメッセージが表示された場合は、[はい]を選択します

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

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

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

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

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 コンソールに移動し、左側のナビゲーション バーで [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. この時点で、サーバーコードは準備完了です。上部のメニューバーで [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. アプリを実行し、株式カテゴリ オプションを切り替えて、登録と登録解除のアクションを実行します。それは次のようになります。

登録

登録解除

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 トピックと Automotive トピックの両方に登録されているアプリ インスタンスのみをターゲットにします。
  • || : 論理 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. 最後に、sendMessageToFcmTopic 関数のみを有効にするように main メソッドを更新します。
  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 を修了したので、以下のガイドを使用して他のプラットフォームのトピックを試してみることをおすすめします。

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