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

1.はじめに

目標

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

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

トピックの概要

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

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

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

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

あなたが学ぶこと

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

構築するもの

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

必要なもの

  • Chromeなどの選択したブラウザ。
  • Javaアプリケーションを開発するためのIntelliJIDEAIDE
    • インストール中は、Gradleのサポートをオプトインしてください。
  • Androidアプリケーションを開発するためのAndroidStudioIDE。
  • 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. GoogleAnalyticsの有効化をスキップできます。このコードラボの目的のために、あなたはそれを必要としません。 [続行]をクリックします。
  2. [プロジェクトの作成]をクリックします。

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

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

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

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

このコードラボの目的のために、AndroidFirebaseアプリを追加します。

84e0b3199bef6d8a.png Androidを構成する

  1. Firebase Consoleで、[設定]歯車の左側のナビゲーションバーの上部にある[プロジェクト設定]を選択し、[一般]ページの[アプリ]の下にある[ 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. このアプリはリリースされないため、このコードラボのデバッグ署名証明書SHA-1は必要ありません。これは空白のままにします。
  3. [アプリの登録]をクリックします。
  4. Firebase Consoleで続行し、指示に従って構成ファイルgoogle-services.jsonをダウンロードします。
  5. 他のすべてはスターターアプリコードですでに構成されているため、残りのセットアップ手順はスキップできます。アプリはFirebaseConsoleのメインページに表示されます。
  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は、プロジェクトをバックグラウンドで初めてコンパイルするのに数秒かかる場合があることに注意してください。この間、AndroidStudioの下部にあるステータスバーにスピナーが表示されます。

4bc64eb3b99eb0ae.png

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

さらに、「言語の変更を有効にするためにリロードしますか?」というプロンプトが表示された場合。または同様のもので、「はい」を選択します。

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

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

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

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

f04ff8f48d186dff.png

  • AndroidManifest.xmlには、 MESSAGING_EVENTコールバックハンドラーがすでに追加されています。
    • このハンドラーStockNewsMessagingService.javaは、さまざまなFirebaseCloudMessaging関連の機能を提供する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がプロジェクトをビルドするのに、必要な依存関係のプルを含めて、数分かかる場合があることに注意してください。

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

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

650fc733298588f8.png

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

サーバーコードの設定

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

テストメッセージの送信

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

52e4a3ec3f816473.png

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

d3540ec1089f97dd.png

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

31203deca59c03fe.png

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

6.トピックのサブスクリプション/サブスクリプション解除を実装する

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

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

レビューコード

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

6c0614199e684f6.png

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

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

  1. subscribeToStockCategoryメソッドでは、 FirebaseMessagingオブジェクトのsubscribeToTopicへの呼び出しを実装します。コードは次のようになります。
   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の呼び出しを実装します。次の線に沿った何か:
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関数で行われた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が関与する注目すべきイベントがある場合に発生する可能性があります。

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

  • &&:論理積。たとえば'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. 最初の行の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.要約

これまでに学んだことを簡単に要約してみましょう。

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

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

c0dc20655d392690.gif

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

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

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

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

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

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

5d5709e7b3cbcb04.png

  1. アプリインスタンスをEnergyトピックにサブスクライブしましょう。これを行うには、最初に次の2つのフィールドのデータを提供します。
    1. RegistrationTokens:トピックサブスクリプションを作成するFCM registrationTokensトークンを表す文字列のコンマ区切りのリスト。
    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を使用します。 FcmSubscriptionManager.javaクラスのunsubscribeFcmRegistrationTokensFromTopic関数に関連するコードを追加します。

8d9e8ea9d34016bd.png

  1. サーバー側のサブスクリプション解除コードを実装し、トピックメッセージを送信してその効果を検証することは、演習として残されています。

11.おめでとうございます

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

947def3eb33b1e4a.gif

次は何ですか?

コードラボが完成したので、次のガイドを使用して他のプラットフォームのトピックを試すことを検討してください。

参照ドキュメント