1. はじめに
目標
このコードラボでは、FCM トピックを使用してアプリ インスタンスのさまざまなサブグループにプッシュ メッセージをマルチキャストできるように、マルチプラットフォーム アプリをインストルメント化する方法を学びます。
完了すると、FCM インフラストラクチャを利用して、これらのサブグループとサブグループ上のマルチキャスト プッシュ メッセージを管理できるようになります。
トピックの概要
トピックは、アプリ インスタンスのサブグループにメッセージを送信するための FCM インフラストラクチャでサポートされる方法です。
FCM は、メッセージを送信したり、これらのトピックへのサブスクリプションを維持したりするための API を提供します。アプリ インスタンスをトピックに関連付けたり関連付けを解除したりする行為は、それぞれサブスクライブおよびサブスクライブ解除と呼ばれます。
トピックは、公開されているコンテンツに使用する必要があります。たとえば、天気予報に関するメッセージなどです。ユーザーに配慮したメッセージを送信する場合は、Firebase Admin SDK を使用して複数のデバイス上でメッセージをマルチキャストします。
トピックベースのマルチキャストはスループットを最適化します。
学べること
- モバイル アプリからユーザーをトピックに登録 (および登録解除) する方法。
- トピックを使用してマルチキャスト プッシュ メッセージを送信する方法。
- トピック条件を使用してトピックの組み合わせにメッセージを送信する方法。
- サーバー側でトピックのサブスクリプションを管理し、一括サブスクリプションとサブスクリプション解除を行う方法。
何を構築するか
- トピックを購読/購読解除し、トピックに送信されたメッセージを受信する Android アプリ。
- Firebase Admin SDK を使用したサーバー側の統合。FCM API 経由でトピック メッセージを送信するために使用されます。
必要なもの
- Chrome などの任意のブラウザ。
- IntelliJ IDEA Java アプリケーション開発用の 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
このコードラボのスターター アプリはfcm-topics-codelab
ブランチのmessaging
ディレクトリにあります。スターター コードに到達するには、次の手順を実行します。これには、 StockNewsApp
とStockNewsServer
2 つのディレクトリが含まれています。前者にはスターター Android アプリが含まれ、後者にはスターター サーバー側コードが含まれます。
git checkout fcm-topics-codelab cd messaging/fcm-topics-codelab/starter
このコードラボの完成版はmessaging/fcm-topics-codelab/completed
ディレクトリに配置されます。
Firebaseプロジェクトを作成する
- Firebase コンソールで、 「プロジェクトの追加」をクリックし、Firebase プロジェクトに「StockNews」という名前を付けて、「続行」をクリックします。注: Firebase プロジェクトのプロジェクト ID を覚えておいてください (または、 [編集]アイコンをクリックして希望のプロジェクト ID を設定します)。
- Google Analytics の有効化をスキップできます。このコードラボの目的では、これは必要ありません。 「続行」をクリックします。
- 「プロジェクトの作成」をクリックします。
おめでとう! Firebase プロジェクトを作成しました。これで、プロジェクト名をクリックしてコンソールに入ることができます。
3. プラットフォーム固有の Firebase アプリ構成
Firebase サポートを有効にするために必要なコード変更のほとんどは、作業中のプロジェクトにすでにチェックインされています。ただし、モバイル プラットフォームのサポートを追加するには、次のことを行う必要があります。
- Firebaseプロジェクトに希望のプラットフォームを登録します。
- プラットフォーム固有の構成ファイルをダウンロードし、コードに追加します。
このコードラボでは、Android Firebase アプリを追加します。
Androidの設定
- Firebase コンソールで、設定歯車の左側ナビゲーション バーの上部にある[プロジェクト設定]を選択し、 [全般]ページの[アプリ]の下にあるAndroidアイコンをクリックします。
次のダイアログが表示されるはずです。
- 指定する重要な値はAndroid パッケージ名です。
com.ticker.stocknews
に設定します。- ここで指定するパッケージ名は、スターターStockNewsAppコードの
AndroidManifest.xml
で指定するものと同じである必要があります。これを検索または変更したい場合は、次の手順に従います。- StockNewsAppディレクトリで、ファイル
app/src/main/AndroidManifest.xml
を開きます。 -
manifest
要素で、package
属性の文字列値を見つけます。この値は Android パッケージ名です。
- StockNewsAppディレクトリで、ファイル
- ここで指定するパッケージ名は、スターターStockNewsAppコードの
- Firebase ダイアログで、コピーしたパッケージ名をAndroid パッケージ名フィールドに貼り付けます。
- このアプリはリリースされないため、このコードラボにはデバッグ署名証明書 SHA-1 は必要ありません。これは空白のままにしておきます。
- [アプリの登録]をクリックします。
- 引き続き Firebase コンソールで、指示に従って構成ファイル
google-services.json
をダウンロードします。 - 他のすべてはスターター アプリ コードですでに構成されているため、残りのセットアップ手順はスキップできます。 Firebase コンソールのメイン ページにアプリがリストされていることがわかります。
-
google-services.json
ファイル (ダウンロードしたばかり)messaging/fcm-topics-codelab/starter/StockNewsApp/app
ディレクトリにコピーします。
4. アプリをビルドして実行する
実際にアプリの作業を開始する準備ができました。まず、アプリをビルドして実行します。
スターターアプリをインポートする
Android Studio を起動し、スターター コード ディレクトリからmessaging/fcm-topics-codelab/starter/StockNewsApp
をインポートします。
プロジェクトがロードされた後、Git がすべてのローカル変更を追跡していないことを示すアラートが表示される場合もあります。「無視」または右上の「 X 」をクリックします。 (変更を Git リポジトリにプッシュバックすることはありません。)
Androidビューを使用している場合は、プロジェクト ウィンドウの左上隅に、以下の画像のようなものが表示されるはずです。 (プロジェクトビューにいる場合、同じ内容を表示するにはプロジェクトを展開する必要があります)
Android Studio が初めてバックグラウンドでプロジェクトをコンパイルするのに数秒かかる場合があることに注意してください。この間、Android Studio の下部にあるステータス バーにスピナーが表示されます。
コードを変更する前に、これが完了するまで待つことをお勧めします。これにより、Android Studio が必要なコンポーネントをすべて取り込むことができるようになります。
さらに、「言語の変更を有効にするにはリロードしますか?」というプロンプトが表示された場合は、または同様の場合は、「はい」を選択します。
エミュレータのセットアップ
Android エミュレーターのセットアップについてヘルプが必要な場合は、 「アプリの実行」の記事を参照してください。
Android アプリのスターター コードを理解する
- スターター コードは、最小限の機能と UI を備えた軽量の Android アプリです。
- firebase-messaging SDKへの依存関係は、
app/build.gradle
ファイルにすでに追加されています。
-
AndroidManifest.xml
には、MESSAGING_EVENT
コールバック ハンドラーがすでに追加されています。- このハンドラー
StockNewsMessagingService.java
は、Firebase Cloud Messaging 関連のさまざまな機能を提供するFirebaseMessagingService
クラスを拡張します。詳細については、FirebaseMessagingService のドキュメントを参照してください。
-
onNewToken
関数は、FCM 登録トークンが作成または更新されるときに呼び出されます。詳細については、「トークン生成の監視」を参照してください。 -
onMessageReceived
関数は、メッセージが受信され、アプリがフォアグラウンドにあるときに呼び出されます。現時点では、受信したメッセージを単にログに記録するだけです。- バックグラウンドとフォアグラウンドのメッセージ配信と処理の違いの詳細については、「Android アプリでのメッセージの受信」を参照してください。
- このハンドラー
- また、
AndroidManifest.xml
には、StockNewsApplication
という名前のAndroidApplication
クラスも提供されます。- このクラスは、アプリの起動時に最初にインスタンス化されます。
-
StockNewsApplication
クラスのonCreate
関数に、FCM 登録トークンの作成呼び出しが追加されます。有効な FCM 登録トークンが生成され、ログに記録されます。
-
MainActivity.java
在庫カテゴリの選択肢を表示するRecyclerView
を追加します。 -
SubscriptionAdapter.java
在庫カテゴリ選択画面を描画するRecyclerView.Adapter
を実装します。- 各株式カテゴリには名前があり、その横にサブスクリプションの切り替えがあります。
- トグルを変更すると、FCM トピックのサブスクリプション/サブスクリプション解除の呼び出しが行われます。
- これらの呼び出しは次のセクションで実装します。
-
model/StockCategories.java
クラスには、すべてのストック カテゴリとそれに関連するトピック名のリストが含まれています。
スターターアプリを実行する
- Android デバイスをコンピュータに接続するか、エミュレータを起動します。
- 上部のツールバーで、ターゲットの Android デバイスまたはエミュレータを選択し、実行ボタンを押します。
- アプリの UI は次のようになります。
- アプリは FCM 登録トークンを作成し、ログに記録します。ただし、アプリの UI は何も変わりません。
- 次の手順で使用するため、FCM 登録トークンをコピーして保存します。
5. テストメッセージを送信する
これで、最後の手順で設定したアプリ インスタンスにテスト メッセージを送信する準備が整いました。
スターターサーバーコードをインポートする
IntelliJ IDEA を起動し、 messaging/fcm-topics-codelab/starter/StockNewsServer
プロジェクトを開きます。
左側のナビゲーション バーのプロジェクト ビューは次のようになります。
IntellIj IDEA がプロジェクトをビルドするには、必要な依存関係の取得を含め、数分かかる場合があることに注意してください。
サーバースターターコードを理解する
- サーバースターターコードは、Gradle ベースの Java プロジェクトです。
-
build.gradle
ファイルには、 firebase-admin SDKへの依存関係がすでに追加されています。この SDK は、さまざまな FCM メッセージ送信機能へのアクセスを提供します。
- 最後に、次の 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 登録トークンをサブスクライブ解除します。
-
-
サーバーコードのセットアップ
- まず、firebase-admin SDK が FCM API への呼び出しを承認できるようにする Firebase サービス アカウントを設定する必要があります。
- Firebase コンソールに移動し、左側のナビゲーション バーで[プロジェクトの概要]の横にある歯車アイコンをクリックし、 [プロジェクト設定]を選択します。
- 設定ページで、 「サービス アカウント」を選択し、 「サービス アカウントの作成」をクリックします。
- ここで、 「新しい秘密キーを生成」ボタンをクリックすると、キーファイルの自動ダウンロードが開始されます。
- キー ファイルの名前を
service-account.json
に変更し、messaging/fcm-topics-codelab/starter/StockNewsServer/src/main/resources
フォルダーにコピーします。 -
FcmSender.java
とFcmSubscriptionManager.java
はどちらも、次のコードを使用してクラスパスからservice-account.json
ファイルを読み込みます。
- この時点で、サーバー コードの準備が整いました。上部のメニューバーから「ビルド」→「プロジェクトのビルド」を実行します。
テストメッセージの送信
FcmSender.java
でsendMessageToFcmRegistrationToken
関数を見つけ、 「スターター アプリの実行」セクションからコピーした FCM 登録トークンをregistrationToken
フィールドに挿入します。-
main
関数で、sendMessageToFcmRegistrationToken
関数のみのコメントを解除し、[実行] をクリックしてコードを実行します。- FCM 登録トークンが
message
オブジェクトのToken
フィールドにどのように設定されるかを確認します。 - さらに、
FirebaseMessaging
インターフェイスのsend
API をどのように使用しているかにも注目してください。
- FCM 登録トークンが
- これにより、前の手順で設定したアプリ インスタンスにメッセージが送信されます。
- アプリ インスタンスがフォアグラウンドにある場合、ログに記録されたメッセージの内容が表示されるはずです。
- アプリ インスタンスがバックグラウンドにあるときは、通知トレイにメッセージが表示されることがわかります。
すごいですね、Firebase Admin SDK を使用してアプリ インスタンスにメッセージを送信しました。サーバーでの Firebase Admin SDK の使用について詳しくは、こちらをご覧ください。
6. トピックの購読/購読解除を実装する
このステップでは、Android アプリのストック カテゴリの切り替えにトピックのサブスクリプションとサブスクリプション解除のアクションを実装します。
アプリ ユーザーが特定のストック カテゴリのスイッチを切り替えると、トピックのサブスクリプションまたはサブスクリプション解除の呼び出しが行われます。
コードをレビューする
- Android アプリ コードの
SubscriptionAdapter.java
クラスに移動し、RecyclerViewViewHolder
クラスを見つけます。
- クラス コンストラクターは、
setOnCheckedChangeListener
を使用して、サブスクリプション切り替えのリスナーを設定します。 - スイッチの切り替えに応じて、
subscribeToStockCategory
とunsubscribeFromStockCategory
メソッドを呼び出すことによって、購読アクションと購読解除アクションがそれぞれ実行されます。 -
setData
メソッドは、RecyclerView アダプターのonBindViewHolder
によって呼び出され、ViewHolder を適切なストック カテゴリにバインドされます。
トピックのサブスクリプションを実装する
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(); }); }
トピックの購読解除を実装する
- 同様に、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(); }); }
試してみましょう
- アプリを実行し、ストック カテゴリ オプションを切り替えて、購読アクションと購読解除アクションを実行します。次のようになります。
購読する | 購読を解除する |
7. 最初のトピックメッセージの送信
このステップでは、FCM トピック メッセージを送信するサーバー側コードを実装します。
トピックメッセージを送信するためのサーバー側統合を実装する
- サーバー コードで、
FcmSender.java
に移動し、sendMessageToFcmTopic
という名前のメソッドを見つけます。
- 最初の行に、メッセージの送信先となる FCM トピックを指定します。
- これは、
/topics/<Topic Name>
形式の文字列です。たとえば、/topics/Technology
。
- これは、
- 次の行では、新しい
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();
- 次に、メッセージを送信するための呼び出しを
FirebaseMessaging
インスタンスに追加します (sendMessageToFcmRegistrationToken
関数で行われる送信呼び出しと同じです)。
FirebaseMessaging.getInstance().send(message);
- 最後に、
main
関数を更新し、sendMessageToFcmTopic
関数の呼び出しのみを有効にします。
メッセージを送信して受信を検証する
- トピック メッセージを送信する前に、アプリ インスタンスが送信先のトピックにサブスクライブされていることを確認してください。
- これは、対応するトグルを切り替えることで実行できます。例えば:
- これで、
FcmSender.java
のmain
関数を実行して、トピック メッセージを送信できるようになりました。 - 以前と同様に、アプリ インスタンスでメッセージの受信を確認できるはずです。
- フォアグラウンドのアプリ インスタンス
- バックグラウンドでのアプリインスタンス
- おまけ: 送信したトピックの購読を解除して、メッセージを再送信してみてください。メッセージがアプリ インスタンスに配信されていないことがわかります。
8. 最初のトピック条件メッセージの送信
トピック条件機能を使用すると、トピックの組み合わせにメッセージを送信して、より表現力豊かな対象者定義を提供できるようになります。
たとえば、StockNews アプリで、テクノロジーまたは自動車のトピックを購読しているアプリ インスタンスのグループにメッセージを送信する可能性を検討してください。たとえば、Waymo に関する注目すべきイベントがある場合、このようなケースが発生する可能性があります。
トピックでは、次の演算子を使用してブール式の形式で組み合わせを表現できます。
- && : 論理積。たとえば、
'Technology' in topics && 'Automotive' in topics
- テクノロジーと自動車の両方のトピックにサブスクライブされているアプリ インスタンスのみをターゲットにします。 - || : 論理和。たとえば、
'Technology' in topics || 'Automotive' in topics
- テクノロジーまたは自動車トピックのいずれかにサブスクライブされているアプリ インスタンスをターゲットとします。 - () : グループ化のための括弧。たとえば、
'Technology' in topics && ('Automotive' in topics || 'Energy' in topics)
- テクノロジーおよび自動車トピックまたはエネルギー トピックのいずれかにサブスクライブされているアプリ インスタンスのみをターゲットとします。
この機能を使用するための送信リクエストを作成する方法について詳しくは、こちらをご覧ください。
トピック条件メッセージを送信するためのサーバー側統合を実装する
- サーバー コードに戻り、
FcmSender.java
に移動し、sendMessageToFcmTopicCondition
という名前のメソッドを見つけます。
- 最初の行の
topicCondition
変数に、メッセージの送信先となるトピックの条件を指定します。次のように設定できます:'Technology' in topics && 'Automotive' in topics
。 - 次の行では、新しい
message
オブジェクト (sendMessageToFcmTopic
関数で定義されたものと同様) を作成します。- 違いは、オブジェクトの
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();
- 次に、メッセージを送信するための呼び出しを
FirebaseMessaging
インスタンスに追加します (sendMessageToFcmTopic
関数で行われる送信呼び出しと同じです)。
FirebaseMessaging.getInstance().send(message);
- 最後に、
main
関数を更新し、sendMessageToFcmTopicCondition
関数の呼び出しのみを有効にします。
メッセージを送信して受信を検証する
- トピック メッセージを送信する前に、アプリ インスタンスをテクノロジー トピックと自動車トピックの両方にサブスクライブして、アプリ インスタンスが指定されたトピック条件を満たしていることを確認します。
- これで、
FcmSender.java
のmain
関数を実行して、トピック メッセージを送信できるようになりました。 - 前と同様に、アプリ インスタンスでメッセージの受信を確認できるはずです。
- フォアグラウンドのアプリ インスタンス
- バックグラウンドでのアプリインスタンス
- ボーナス: テクノロジー トピックの購読を解除し、トピックの条件メッセージを再送信できるようになりました。メッセージがアプリ インスタンスによって受信されていないことを確認する必要があります。
9. 要約
これまでに学んだことを簡単に復習してみましょう。
- アプリインスタンスからトピックのサブスクリプション/サブスクリプション解除を開始する方法。
- トピックにメッセージを送信し、サブスクライブされたアプリ インスタンスでの受信を確認します。
- トピック条件にメッセージを送信し、条件を満たすアプリ インスタンスでの受信を確認します。
次のセクションでは、クライアント側から呼び出しをインスタンス化することなく、アプリ インスタンスをトピックに登録または登録解除する方法について説明します。
10. サーバー側からトピックのサブスクリプションを管理する
これまで、このコードラボでは、すべてのトピックのサブスクリプションとサブスクリプション解除の呼び出しはアプリ インスタンスから開始されていました。
ただし、使用例によっては、トピックのサブスクリプションをサーバー側から管理する必要がある場合があります。たとえば、アプリのロールアウトを待たずに、既存のユーザー ベースのサブグループを新しいトピックにサブスクライブしたい場合があります。
このセクションでは、 Firebase Admin SDK を使用して、サーバー側から呼び出しを行うことで FCM 登録トークンのバッチをトピックにサブスクライブおよびサブスクライブ解除する方法を学習します。
FCM トピックへの FCM 登録トークンのサーバー側サブスクリプションを実装する
- サーバー コードで、
FcmSubscriptionManager.java
クラスにジャンプします。subscribeFcmRegistrationTokensToTopic
という名前のメソッドを見つけます。ここでは、subscribeToTopic
API の呼び出しを実装します。
- アプリ インスタンスを Energy トピックにサブスクライブしましょう。これを行うには、まず次の 2 つのフィールドにデータを指定します。
-
registrationTokens
: トピック サブスクリプションを作成する FCM 登録トークンを表す文字列のカンマ区切りのリスト。 -
topicName
: Energy トピックのトピック名、つまり/topics/Energy
。
-
- 次の数行では、次の行に沿って呼び出しを実装します。
TopicManagementResponse response = FirebaseMessaging.getInstance().subscribeToTopic( registrationTokens, topicName);
-
TopicManagementResponse
検査して、いくつかの高レベルの結果統計を確認できます。getSuccessCount
を使用して、正常に作成されたトピック サブスクリプションの数を出力するなど。
System.out.printf("Num tokens successfully subscribed %d", response.getSuccessCount());
- 最後に、
main
関数で、subscribeFcmRegistrationTokensToTopic
関数の呼び出しのみを有効にします。
サブスクリプションを作成してトピック メッセージを送信する
- この時点で、トピック サブスクリプションを作成し、それにメッセージを送信する準備が整いました。
-
FcmSubscriptionManager.java
クラスのmain
関数を実行します。これにより、トピックのサブスクリプションが作成されます。 - 次に、メッセージを送信するためのコードを設定します。以前と同様に、
-
FcmSender.java
で、sendMessageToFcmTopic
関数を見つけます。 -
topicName
を Energy トピック、つまり/topics/Energy
に設定します。 -
Message
オブジェクトを作成し、setTopic
を使用してトピックをターゲットにします。 - 最後に、
sendMessageToFcmTopic
関数のみを有効にするようにmain
メソッドを更新します。
-
-
FcmSender.java
のmain
関数を実行します。これにより、メッセージがアプリ インスタンスに送信され、次のようにアプリでメッセージを確認できます。- フォアグラウンドのアプリ インスタンス
- バックグラウンドでのアプリインスタンス
FCM トピックへの FCM 登録トークンのサーバー側のサブスクリプション解除を実装する
- サーバー側のトピックの購読解除には、この
unsubscribeFromTopic
API を使用します。FcmSubscriptionManager.java
クラスのunsubscribeFcmRegistrationTokensFromTopic
関数に関連するコードを追加します。
- サーバー側のサブスクリプション解除コードの実装とトピック メッセージの送信によるその効果の検証は、演習として残されています。
11. おめでとうございます
FCM トピックを使用して、アプリ インスタンスのサブグループにマルチキャスト メッセージを送信することができました。おめでとうございます。これにより、関連コンテンツをユーザーにタイムリーに届けることが簡単になります。
次は何ですか?
コードラボが完了したので、次のガイドを使用して他のプラットフォームのトピックを試してみることを検討してください。