通知をユーザー セグメントに送信する

ユーザー セグメントを使用すると、特定のユーザーグループに通知を送信できます。定義済みのユーザー セグメントを対象にすることも、Firebase Analytics で作成したカスタムのユーザーリストを対象にすることもできます。

SDK を設定する

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

事前準備

  • Android 2.3(Gingerbread)以降、および Google Play 開発者サービス 10.0.1 以降が搭載された端末
  • Android SDK マネージャーの Google Play 開発者サービス SDK
  • Android Studio 1.5 以降
  • Android Studio プロジェクトとそのパッケージ名

Android Studio プロジェクトをまだ用意していない場合、Firebase 機能を試すだけであれば、クイックスタート サンプルをダウンロードしてご利用いただけます。クイックスタートを使用する場合は、パッケージ名を ApplicationManifest.xml から取得してください。次のステップでこの名前が必要になります。

アプリに 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'
}

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

また、使用する Firebase SDK の依存関係も追加する必要があります。Firebase Analytics を含む firebase-core から始めることをおすすめしますが、完全なリストについては以下をご覧ください。

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

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

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

  3. メッセージのテキストを入力します。

  4. メッセージのターゲットを選択します。ダイアログには、[アプリ/アプリのバージョン]、[端末の言語]、または [ユーザーリスト内のユーザー] のどれを選択したのかに基づいてターゲットを絞り込む詳細オプションが表示されます。

[メッセージを送信] をクリックすると、アプリをバックグラウンドで実行しているターゲット クライアント端末のシステム通知トレイに通知が届きます。ユーザーが通知をタップすると、アプリが起動されます。

通知を受信して処理する

アプリをフォアグラウンドで実行しているときに通知を受信できるようにするには、メッセージを処理するロジックをクライアント アプリケーションに追加する必要があります。

To receive messages, use a service that extends FirebaseMessagingService.サービスでは onMessageReceived コールバックをオーバーライドする必要があります。このコールバックは次の例外を除いて、ほとんどのメッセージ タイプに利用できます。

  • アプリがバックグラウンドで動作しているときに配信される通知。この場合、通知は端末のシステムトレイに配信されます。通知をユーザーがタップすると、デフォルトではアプリのランチャーが開きます。

  • 通知とデータ ペイロードの両方を含む、バックグラウンドおよびフォアグラウンドのメッセージ。この場合、通知は端末のシステムトレイに配信され、データ ペイロードはランチャー アクティビティのインテントの追加部分で配信されます。

要約:

アプリの状態 通知 データ ペイロード 両方
フォアグラウンド onMessageReceived onMessageReceived onMessageReceived
バックグラウンド システムトレイ onMessageReceived 通知: システムトレイ
インテントの追加部分にあるデータ
メッセージ タイプについて詳しくは、通知とデータ メッセージをご覧ください。

アプリのマニフェストの編集

FirebaseMessagingService を使用するには、アプリのマニフェストに次の設定を追加する必要があります。

<service
    android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

onMessageReceived のオーバーライド

FirebaseMessagingService.onMessageReceived メソッドをオーバーライドすると、受信メッセージに基づいて操作を実行し、メッセージ データを取得することができます。

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // ...

    // TODO(developer): Handle FCM messages here.
    // Not getting messages here? See why this may be: https://goo.gl/39bRNJ
    Log.d(TAG, "From: " + remoteMessage.getFrom());

    // Check if message contains a data payload.
    if (remoteMessage.getData().size() > 0) {
        Log.d(TAG, "Message data payload: " + remoteMessage.getData());
    }

    // Check if message contains a notification payload.
    if (remoteMessage.getNotification() != null) {
        Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
    }

    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
}

バックグラウンド アプリの通知メッセージの処理

アプリがバックグラウンドで動作しているとき、Android ではシステムトレイに通知メッセージが送られます。ユーザーが通知をタップすると、デフォルトでアプリ ランチャーが開きます。

通知とデータ ペイロードの両方を含むメッセージ(および Notifications コンソールから送信されたすべてのメッセージ)がここに含まれます。通知は端末のシステムトレイに配信され、データ ペイロードはランチャー アクティビティのインテントの追加部分で配信されます。

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