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
ディレクトリにあります。スターター コードに到達するには、次の手順を実行します。 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 アナリティクスの有効化はスキップできます。この Codelab の目的では、これは必要ありません。 [続行] をクリックします。
- [プロジェクトを作成]をクリックします。
おめでとう! 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 パッケージ名フィールドに貼り付けます。
- このアプリはリリースされないため、この Codelab にはデバッグ署名証明書 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 アプリです。
-
app/build.gradle
ファイルには、firebase-messaging SDKへの依存関係が既に追加されています。
-
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
プロジェクトを開きます。
左のナビゲーション バーのプロジェクト ビューは、次のようになります。
必要な依存関係のプルを含め、IntelIj 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
ファイルを読み込みます。
- Firebase コンソールに移動し、左側のナビゲーション バーの[プロジェクトの概要]の横にある歯車のアイコンをクリックして、 [プロジェクトの設定]を選択します。
- この時点で、サーバー コードの準備が整いました。上部のメニュー バーから Build -> Build Project を実行します。
テスト メッセージの送信
FcmSender.java
でsendMessageToFcmRegistrationToken
関数を見つけ、 「スターター アプリの実行」セクションからコピーした FCM 登録トークンをregistrationToken
フィールドに挿入します。-
main
関数でsendMessageToFcmRegistrationToken
関数だけをコメント解除し、[実行] をクリックしてコードを実行します。- FCM 登録トークンが
message
オブジェクトのToken
フィールドにどのように設定されているかを確認します。 - さらに、
FirebaseMessaging
インターフェースのsend
API をどのように使用したかに注目してください。
- FCM 登録トークンが
- これにより、前の手順で設定したアプリ インスタンスにメッセージが送信されます。
- アプリ インスタンスがフォアグラウンドにある場合、ログに記録されたメッセージ コンテンツが表示されます。
- App インスタンスがバックグラウンドにある場合は、通知トレイにメッセージが表示されます。
すばらしい、Firebase Admin SDK を使用してアプリ インスタンスにメッセージを送信しました。サーバーで Firebase Admin SDK を使用する方法について詳しくは、こちらをご覧ください。
6.トピックの購読/購読解除を実装する
このステップでは、Android アプリの株式カテゴリ トグルで、トピックのサブスクリプションとサブスクリプション解除のアクションを実装します。
アプリ ユーザーが特定の株式カテゴリのスイッチを切り替えると、トピックのサブスクリプションまたはサブスクリプション解除の呼び出しが行われます。
コードのレビュー
- Android アプリ コードの
SubscriptionAdapter.java
クラスに移動し、RecyclerViewViewHolder
クラスを見つけます。
- クラス コンストラクターは、
setOnCheckedChangeListener
を使用して、サブスクリプション トグルのリスナーを設定します。 - スイッチのトグルに応じて、
subscribeToStockCategory
とunsubscribeFromStockCategory
メソッドをそれぞれ呼び出すことで、購読および購読解除のアクションが実行されます。 -
setData
メソッドは RecyclerView アダプタのonBindViewHolder
によって呼び出され、ViewHolder を適切な Stock カテゴリにバインドします。
トピック サブスクリプションを実装する
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
関数で行われる send 呼び出しと同じです)。
FirebaseMessaging.getInstance().send(message);
- 最後に、
main
関数を更新し、sendMessageToFcmTopicCondition
関数のみの呼び出しを有効にします。
メッセージを送信して受信を確認する
- トピック メッセージを送信する前に、まずアプリ インスタンスを Technology トピックと Automotive トピックの両方にサブスクライブして、アプリ インスタンスが指定されたトピック条件を満たしていることを確認します。
-
FcmSender.java
のmain
関数を実行して、トピック メッセージを送信できるようになりました。 - 前と同様に、アプリ インスタンスでメッセージの受信を確認できるはずです。
- フォアグラウンドのアプリ インスタンス
- バックグラウンドでのアプリ インスタンス
- おまけ: テクノロジー トピックの購読を解除し、トピック条件メッセージを再送信できるようになりました。メッセージがアプリ インスタンスによって受信されないことを確認する必要があります。
9. まとめ
ここまでで学んだことを簡単に復習しましょう。
- アプリ インスタンスからトピックの購読/購読解除を開始する方法。
- トピックにメッセージを送信し、サブスクライブしたアプリ インスタンスで受信を確認します。
- トピック Condition にメッセージを送信し、条件を満たすアプリ インスタンスで受信を確認します。
次のセクションでは、クライアント側からの呼び出しをインスタンス化する必要なく、アプリ インスタンスをトピックにサブスクライブ/サブスクライブ解除する方法について学習します。
10. サーバー側からのトピック サブスクリプションの管理
これまで、この Codelab では、すべてのトピックのサブスクリプションとサブスクリプション解除の呼び出しがアプリ インスタンスから開始されていました。
ただし、ユース ケースによっては、トピック サブスクリプションをサーバー側から管理したい場合があります。たとえば、アプリのロールアウトを待たずに、既存のユーザー ベースのサブグループを新しいトピックにサブスクライブしたい場合があります。
このセクションでは、 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
を使用してトピックをターゲットにします。 - 最後に、
main
メソッドを更新してsendMessageToFcmTopic
関数のみを有効にします。
-
-
FcmSender.java
のmain
関数を実行します。これにより、メッセージがアプリ インスタンスに送信され、次のようにアプリで確認できます。- フォアグラウンドのアプリ インスタンス
- バックグラウンドでのアプリ インスタンス
FCM トピックへの FCM 登録トークンのサーバー側のサブスクリプション解除を実装する
- サーバー側のトピックの購読解除には、この
unsubscribeFromTopic
API を使用します。関連するコードをFcmSubscriptionManager.java
クラスのunsubscribeFcmRegistrationTokensFromTopic
関数に追加します。
- サーバー側のサブスクリプション解除コードを実装し、トピック メッセージを送信してその効果を検証することは、演習として残されています。
11.おめでとう
おめでとうございます。FCM トピックを使用してマルチキャスト メッセージをアプリ インスタンスのサブグループに送信することに成功しました。これにより、関連するコンテンツをユーザーにタイムリーに届ける機能が簡素化されます。
次は何ですか?
Codelab を完了したので、次のガイドを使用して他のプラットフォームのトピックを試すことを検討してください。