Firebase console でトピック メッセージを送信する

パブリッシュ / サブスクライブ モデルに基づく FCM トピック メッセージングでは、特定のトピックにオプトインした複数の端末にメッセージを送信できます。必要に応じて作成したトピック メッセージを FCM がルーティング処理し、確実に正しい端末にメッセージを配信します。

たとえば、地域の天気予報アプリのユーザーは、「荒天警報」のトピックにオプトインし、暴風雨警報指定地域の通知を受信できます。スポーツアプリのユーザーは、お気に入りのチームの実況ゲームスコアの自動更新に登録できます。

トピックに関する留意点を以下に示します。

  • トピック メッセージングは、アプリごとに無制限のトピックとサブスクリプションをサポートします。
  • トピック メッセージングは、ニュース、天気、その他の公開情報などのコンテンツに最適です。
  • トピック メッセージは、待ち時間ではなく、スループットに対して最適化されます。単一の端末または端末の小グループへの高速で安全な配信の場合は、トピックではなく、トークンをメッセージの対象とします
  • メッセージを各ユーザーにつき複数の端末に送信する必要がある場合は、そのようなユースケース向けの端末グループ メッセージングを検討してください。

SDK を設定する

このセクションで説明しているタスクは、アプリの他の Firebase 機能を既に有効にしている場合は完了済みの可能性があります。

事前準備

  • Android 2.3(Gingerbread)以降、および Google Play 開発者サービス 10.0.1 以降が搭載された端末
  • Android SDK マネージャーで利用可能な Google リポジトリの Google Play 開発者サービス SDK
  • Android Studio の最新バージョン(バージョン 1.5 以降)

Android Studio プロジェクトをまだ用意していない場合、Firebase 機能を試すだけであれば、クイックスタート サンプルをダウンロードしてご利用いただけます。クイックスタートを使用する場合は、プロジェクトのモジュール フォルダ(通常は app/)内の build.gradle ファイルからアプリケーション ID を忘れずに取得してください。このパッケージ名は次のステップで必要になります。

アプリに Firebase を追加する

アプリに Firebase を追加するには、Firebase プロジェクトと、アプリ用の Firebase 設定ファイルが必要です。

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase console で Firebase プロジェクトを作成します。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[Google プロジェクトをインポート] をクリックします。それ以外の場合は、[新規プロジェクトを作成] をクリックします。
  2. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、設定ファイルをダウンロードするだけでかまいません。
  3. プロンプトが表示されたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  4. google-services.json ファイルをダウンロードします。このファイルはいつでももう一度ダウンロードできます。
  5. このファイルをプロジェクトのモジュール フォルダ(通常は app/)にコピーしていない場合は、コピーします。

SDK を追加する

Firebase ライブラリをプロジェクトに統合する場合は、Android Studio プロジェクトを準備するためのいくつかの基本タスクを実行する必要があります。ただし、アプリに Firebase を追加するときに、既にこの手順を完了している可能性があります。

まず、google-services プラグインを含めるように、ルートレベルの build.gradle ファイルにルールを追加します。

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

次に、モジュールの Gradle ファイル(通常は app/build.gradle)の末尾に apply plugin 行を追加して、Gradle プラグインを有効にします。

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-core:10.0.1'

  // Getting a "Could not find" error? Make sure you have
  // the latest Google Repository in the Android SDK manager
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

また、使用する Firebase SDK の依存関係も追加する必要があります。はじめに、Firebase Analytics 機能を提供する com.google.firebase:firebase-core から開始することをおすすめします。使用可能なライブラリの一覧をご覧ください。

Android クライアント アプリでトピック メッセージを受信する

セットアップ タスクを完了したら、トピックに登録し、その後そのトピックに送信されたメッセージを処理するために、クライアント コードを追加することができます。

クライアント アプリは既存のトピックに登録するだけでなく、新しいトピックを作成することもできます。クライアント アプリを新しいトピック名(Firebase プロジェクトにまだ存在していないトピック名)に登録すると、その名前の新しいトピックが FCM に作成され、その後すべてのクライアントはそのトピック名に登録できるようになります。

トピックに登録する場合、クライアント アプリは、FCM トピック名で Firebase Cloud Messaging subscribeToTopic() を呼び出します。

FirebaseMessaging.getInstance().subscribeToTopic("news");

登録解除する場合、クライアント アプリはトピック名で Firebase Cloud Messaging unsubscribeFromTopic() を呼び出します。

Notifications コンソールからトピック メッセージを送信する

  1. ターゲット端末でアプリをインストールして実行します。

  2. Firebase console の [** Notifications **] タブを開き、[新しいメッセージ] を選択します。

  3. メッセージのテキストを入力します。
  4. トピックリストから、対象にするトピックを選択します。 このリストには、この Firebase プロジェクトで有効なサブスクリプションがあるすべてのトピックのデータが入力されます(コンソールに新しいトピックが表示されるまでに 1 日程度の遅延が発生することがあります)。

[メッセージを送信] をクリックすると、Firebase Cloud Messaging はそのトピックに登録しているすべてのクライアント アプリ インスタンスにメッセージを配信します。

コンソールのフィールドとメッセージ ペイロード

Notifications コンソールから通知メッセージを送信する場合、Google は Composer で入力されたフィールドを次の 2 つの方法で使用します。

  1. [ユーザー セグメント] や [有効期限] などのフィールドによってメッセージのターゲットと配信オプションを決定します。
  2. [メッセージ文] や [カスタムデータ] などのフィールドは、Key-Value ペアで構成されたペイロードでクライアントに送信されます。

後者のキーの一部は FCM サーバー API を通じて使用することもできます。たとえば、[カスタムデータ] に入力された Key-Value ペアは通知のデータ ペイロードとして処理されます。他のフィールドは FCM 通知ペイロードのキーに直接マッピングされます。

Notifications コンソールの一部のフィールドは FCM サーバー API では使用できないことに注意してください。たとえば、アプリ、アプリのバージョン、または言語に基づいてユーザー セグメントをターゲット設定するときに使用する方法は、サーバー API で [to] フィールドを使用する場合には利用できません。

Notifications コンソールからクライアントに送信されるキーには次のものがあります。

キー コンソール フィールドのラベル 説明
notification.title メッセージ タイトル 通知のタイトルを示します。
notification.body メッセージ文 通知の本文テキストを示します。
data カスタムデータ 定義した Key-Value ペア。これらのペアは、処理するアプリのデータ ペイロードとして配信されます。

メッセージの配信を決定するキーには次のものが含まれます。

キー コンソール フィールドのラベル 説明
priority 優先度

メッセージの優先度を設定します。

詳細については、メッセージの優先順位の設定をご覧ください。

sound 通知音

端末が通知を受信したときに再生する通知音を示します。

time_to_live 有効期限

このパラメータでは、端末がオフラインの場合にメッセージを FCM のストレージに保持する期間(秒単位)を指定します。詳細については、メッセージの有効期間の設定をご覧ください。

フィードバックを送信...