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

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

SDK を設定する

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

前提条件

  • Android 4.0(Ice Cream Sandwich)以降、および Google Play 開発者サービス 15.0.0 以降が搭載された端末
  • Android Studio の最新バージョン

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

アプリに Firebase を追加する

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

Firebase プロジェクトを作成するには:

  1. Firebase プロジェクトをまだ用意していない場合は、Firebase コンソールで Firebase プロジェクトを作成します。[プロジェクトを追加] をクリックします。モバイルアプリと関連付けられた既存の Google プロジェクトがある場合は、[プロジェクト名] プルダウン メニューから選択します。それ以外の場合は、プロジェクト名を入力して新しいプロジェクトを作成します。
  2. 省略可: プロジェクト ID を編集します。プロジェクトには一意の ID が自動的に付与され、データベース URL や Firebase Hosting サブドメインなどの一般公開される Firebase の機能で使用されます。特定のサブドメインを使用する場合は、この時点でプロジェクト ID を変更できます(後で変更できません)。
  3. 残りの設定手順に沿って操作した後、[プロジェクトを作成](または既存のプロジェクトを使用している場合は [Firebase を追加])をクリックして、プロジェクト用のリソースのプロビジョニングを開始します。通常、この処理には数分かかります。処理が完了すると、プロジェクトの概要が表示されます。

これでプロジェクトを用意できました。プロジェクトに Android アプリを追加できます。

  1. [Android アプリに Firebase を追加] をクリックし、設定手順に沿って操作します。既存の Google プロジェクトをインポートする場合、このステップは自動的に実行されることがあります。その場合は、構成ファイルをダウンロードするだけでかまいません。
  2. 求められたら、アプリのパッケージ名を入力します。必ずアプリで使用しているパッケージ名を入力してください。パッケージ名を設定できるのは、アプリを Firebase プロジェクトに追加するときだけです。
  3. 処理中に google-services.json ファイルをダウンロードします。このファイルは、いつでもダウンロードできます。
  4. 初期化コードを追加してアプリを実行すると、Firebase を正常にインストールしたという確認のメッセージが Firebase コンソールに送信されます。

SDK を追加する

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

まず、ルートレベルの build.gradle ファイルにビルドルールを追加し、google-services プラグインと Google の Maven レポジトリを含めます。

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

allprojects {
    // ...
    repositories {
        // ...
        google() // Google's Maven repository
    }
}

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

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-core:16.0.3'
  implementation 'com.google.firebase:firebase-messaging:17.3.1'
  // Getting a "Could not find" error? Make sure you have
  // added the Google maven respository to your root build.gradle
}

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

また、使用する Firebase SDK の依存関係も追加する必要があります。まず、Firebase 向け Google アナリティクス機能を提供する com.google.firebase:firebase-core から始めることをおすすめします。使用可能なライブラリの一覧をご覧ください。

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

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

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

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

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

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

現在の登録トークンを取得する

現在のトークンを取得する必要がある場合は、ここに示すように FirebaseInstanceId.getInstance().getInstanceId() を呼び出します。

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

onNewToken コールバックは、新しいトークンが生成されるたびに呼び出されます。


/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
@Override
public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // 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(token);
}

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

通知メッセージの送信

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

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

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

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

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

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

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

アプリへのメッセージ配信については、FCM レポート ダッシュボードをご覧ください。このダッシュボードには、Android アプリの「インプレッション」(ユーザーが表示した通知)のデータとともに、iOS と Android の端末で送信および開封されたメッセージの数が記録されています。

次のステップ

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

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

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

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

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

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