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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

1.はじめに

目標

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

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

トピックスの概要

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

FCM は、メッセージを送信し、これらのトピックへのサブスクリプションを維持するための API を提供します。アプリ インスタンスをトピックに関連付けたり関連付けを解除したりする行為は、それぞれサブスクライブとサブスクライブ解除と呼ばれます。

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

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

学習内容

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

構築するもの

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

必要なもの

  • Chrome など、任意のブラウザー。
  • Java アプリケーションを開発するためのIntelliJ IDEA IDE。
    • インストール時に Gradle のサポートをオプトインしてください。
  • Android アプリケーションを開発するためのAndroid Studio IDE。
  • Android アプリケーションを実行するためのデバイス。のどちらか:
    • Android エミュレーター。 ( 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

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

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

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

fc08f9a7808e4553.png

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

おめでとう! Firebase プロジェクトを作成しました。これで、プロジェクト名をクリックしてコンソールに入ることができます。

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

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

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

このコードラボでは、Android Firebase アプリを追加します。

84e0b3199bef6d8a.png Android の構成

  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 がすべてのローカル変更を追跡していないというアラートが表示される場合もあります。右上の [無視] または [ X ] をクリックしてください。 (変更を Git リポジトリにプッシュすることはありません。)

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

b574ea0089ee87c6.png

Android Studio が最初にプロジェクトをバックグラウンドでコンパイルするには、数秒かかる場合があることに注意してください。この間、Android Studio の下部にあるステータス バーにスピナーが表示されます。

4bc64eb3b99eb0ae.png

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

さらに、「言語の変更を有効にするために再読み込みしますか?」というプロンプトが表示された場合は、または同様の場合は、[はい] を選択します。

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

Android エミュレーターのセットアップについてサポートが必要な場合は、アプリの実行に関する記事を参照してください。

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

必要な依存関係のプルを含め、IntelIj 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. [新しい秘密鍵を生成]ボタンをクリックすると、鍵ファイルの自動ダウンロードが開始されます。
    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.javasendMessageToFcmRegistrationToken関数を見つけ、 「スターター アプリの実行」セクションからコピーした FCM 登録トークンをregistrationTokenフィールドに挿入します。
  2. main関数でsendMessageToFcmRegistrationToken関数だけをコメント解除し、[実行] をクリックしてコードを実行します。
    1. FCM 登録トークンがmessageオブジェクトのTokenフィールドにどのように設定されているかを確認します。
    2. さらに、 FirebaseMessagingインターフェースのsend API をどのように使用したかに注目してください。

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

  1. App インスタンスがバックグラウンドにある場合は、通知トレイにメッセージが表示されます。

31203deca59c03fe.png

すばらしい、Firebase Admin SDK を使用してアプリ インスタンスにメッセージを送信しました。サーバーで Firebase Admin SDK を使用する方法について詳しくは、こちらをご覧ください。

6.トピックの購読/購読解除を実装する

このステップでは、Android アプリの株式カテゴリ トグルで、トピックのサブスクリプションとサブスクリプション解除のアクションを実装します。

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

コードのレビュー

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

6c0614199e684f6.png

  • クラス コンストラクターは、 setOnCheckedChangeListenerを使用して、サブスクリプション トグルのリスナーを設定します。
  • スイッチのトグルに応じて、 subscribeToStockCategoryunsubscribeFromStockCategoryメソッドをそれぞれ呼び出すことで、購読および購読解除のアクションが実行されます。
  • setDataメソッドは RecyclerView アダプタのonBindViewHolderによって呼び出され、ViewHolder を適切な Stock カテゴリにバインドします。

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

  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. 最初の行で、メッセージの送信先の 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関数で行われる送信呼び出しと同じです)。
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 に関する注目すべきイベントが発生した場合、このようなケースが発生する可能性があります。

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

  • && : 論理積。たとえば、 'Technology' in topics && 'Automotive' in topics - テクノロジー トピックと自動車トピックの両方にサブスクライブされているアプリ インスタンスのみを対象とします。
  • || : 論理和。たとえば、 'Technology' in topics || 'Automotive' in topics - テクノロジーまたは自動車のトピックに登録されているアプリ インスタンスを対象とします。
  • () : グループ化のための括弧。たとえば、 'Technology' in topics && ('Automotive' in topics || 'Energy' in topics) - テクノロジーと、自動車またはエネルギーのいずれかのトピックにサブスクライブされているアプリ インスタンスのみを対象とします。

この機能を使用するための送信リクエストの作成方法について詳しくは、こちらをご覧ください。

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

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

3719a86c274522cf.png

  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. トピック メッセージを送信する前に、まずアプリ インスタンスを Technology トピックと Automotive トピックの両方にサブスクライブして、アプリ インスタンスが指定されたトピック条件を満たしていることを確認します。
  2. FcmSender.javamain関数を実行して、トピック メッセージを送信できるようになりました。
  3. 前と同様に、アプリ インスタンスでメッセージの受信を確認できるはずです。
    1. フォアグラウンドのアプリ インスタンス
    6f612ace15aa6515.png
    1. バックグラウンドでのアプリ インスタンス
    78044a56ac2359cb.png
  4. おまけ: テクノロジー トピックの購読を解除し、トピック条件メッセージを再送信できるようになりました。メッセージがアプリ インスタンスによって受信されないことを確認する必要があります。

9. まとめ

ここまでで学んだことを簡単に復習しましょう。

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

次のセクションでは、クライアント側からの呼び出しをインスタンス化する必要なく、アプリ インスタンスをトピックにサブスクライブ/サブスクライブ解除する方法について学習します。

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 : Energy トピックのトピック名、つまり/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.javasendMessageToFcmTopic関数を見つけます。
    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 を完了したので、次のガイドを使用して他のプラットフォームのトピックを試すことを検討してください。

参照ドキュメント