バックグラウンドで動作しているアプリに最初のメッセージを送信する

FCM を使用する手始めとして、アプリがバックグラウンドで動作しているときに Notifications Composer から特定のユーザーの端末に通知メッセージを送信するという最もシンプルなユースケースを作成します。このページには、このチュートリアルに必要なセットアップから検証までのすべての手順が記載されています。Android クライアント アプリでの FCM の設定がすでに済んでいる場合は、一部の手順を省略できます。

SDK を設定する

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

前提条件

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

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

アプリに Firebase を追加する

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

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで 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.1.0'
    }
}

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

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-core:11.0.4'
  compile 'com.google.firebase:firebase-messaging:11.0.4'
  // 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 向け Google アナリティクス機能を提供する com.google.firebase:firebase-core から始めることをおすすめします。使用可能なライブラリの一覧をご覧ください。

登録トークンにアクセスする

特定の端末にメッセージを送信するには、その端末の登録トークンを知っておく必要があります。このチュートリアルを完了するには、Notifications コンソールのフィールドにトークンを入力する必要があるため、トークンを取得したら、必ずコピーするか安全に保管しておく必要があります。

アプリを初めて起動すると、クライアント アプリのインスタンスの登録トークンが FCM SDK によって生成されます。単一の端末を宛先とするか、端末グループを作成する場合は、FirebaseInstanceIdService を拡張してこのトークンにアクセスする必要があります。

このセクションでは、トークンを取得する方法、およびトークンに対する変更をモニタリングする方法について説明します。トークンは最初の起動後にローテーションされている可能性があるため、更新された最新の登録トークンを取得することを強くおすすめします。

登録トークンは次のような場合に変更されることがあります。

  • アプリによってインスタンス ID が削除される場合
  • アプリが新しい端末で復元される場合
  • ユーザーがアプリをアンインストール / 再インストールする場合
  • ユーザーがアプリのデータを消去する場合

現在の登録トークンの取得

現在のトークンを取得する場合は、FirebaseInstanceId.getInstance().getToken() を呼び出します。トークンがまだ生成されていない場合、このメソッドは null を返します。

トークンの生成のモニタリング

新しいトークンが生成されるたびに onTokenRefresh コールバックが呼び出されるため、そのコンテキストで getToken を呼び出すことにより、利用可能な最新の登録トークンに確実にアクセスできます。サービスをマニフェストに追加してから、次の例のように onTokenRefresh のコンテキスト内で getToken を呼び出して、値をログに記録します。

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(refreshedToken);
}

トークンを取得したら、それをアプリサーバーに送信して、適切な方法で保管できます。API の詳細については、インスタンス ID API リファレンスをご覧ください。

通知メッセージの送信

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

  2. アプリが端末のバックグラウンドで動作していることを確認します。

  3. Notifications Composer を開き、[新しいメッセージ] を選択します。

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

  5. メッセージのターゲットとして [単一の端末] を選択します。

  6. [FCM 登録トークン] というラベルの付いたフィールドに、このガイドの前のセクションで取得した登録トークンを入力します。

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

次のステップ

フォアグラウンドで動作しているアプリへのメッセージの送信

バックグラウンドで動作しているアプリに通知メッセージが正常に送信されたら、Android アプリでメッセージを受信するを参照して、フォアグラウンドで動作しているアプリへのメッセージの送信を試します。

通知メッセージ以外の動作

通知メッセージだけでなく、他のより高度な動作をアプリに追加する場合は、以下を確認してください。

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

ご不明な点がありましたら、Google のサポートページをご覧ください。