コンソールへ移動

バックグラウンド アプリにテスト メッセージを送信する

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

SDK を設定する

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

準備

  • Android Studio の最新バージョンをインストールするか、更新してください。

  • Android アプリを確認してください。

    • API レベル 16(Jelly Bean)以降が対象です。
    • Gradle 4.1 以降を使用します。
  • アプリを実行するためのデバイスまたはエミュレータを設定します。

    • エミュレータでは Google Play を含むエミュレータ イメージを使用する必要があります。
  • Google アカウントを使用して Firebase にログインします。

Android アプリ プロジェクトをまだ用意していない場合、Firebase プロダクトを試すだけであれば、クイックスタート サンプルをダウンロードしてご利用いただけます。

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

Android アプリに Firebase を追加する前に、Android アプリに接続するための Firebase プロジェクトを作成します。Firebase プロジェクトの詳細については、Firebase プロジェクトについて理解するをご覧ください。

Firebase を使用してアプリを登録する

Firebase プロジェクトを作成したら、プロジェクトに Android アプリを追加できます。

Firebase プロジェクトにアプリを追加するベスト プラクティス、考慮事項(複数のビルド バリエーションの扱い方など)の詳細については、Firebase プロジェクトについて理解するをご覧ください。

  1. Firebase コンソールの [プロジェクトの概要] ページの中央にある Android アイコンをクリックして設定ワークフローを起動します。

    すでに Firebase プロジェクトにアプリまたはゲームを追加している場合は、[アプリを追加] をクリックするとプラットフォームのオプションが表示されます。

  2. アプリのアプリケーション ID を [Android パッケージ名] フィールドに入力します。

    • アプリケーション ID はパッケージ名と呼ばれることもあります。

    • このアプリケーション ID はモジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)内に記載されています(アプリケーション ID の例: com.yourcompany.yourproject)。

  3. (省略可)設定ワークフローの指示に従って他のアプリ情報を入力します。

    ニックネームは内部用の簡便な ID であり、Firebase コンソールでのみ表示されます。

  4. [アプリを登録] をクリックします。

Firebase 構成ファイルを追加する

  1. Firebase Android 構成ファイルをアプリに追加します。

    1. [google-services.json をダウンロード] をクリックして、Firebase Android 構成ファイル(google-services.json)を取得します。

      • Firebase Android 構成ファイルはいつでも再ダウンロードできます。
      • 構成ファイルに (2) のような文字が追加されていないことを確認してください。
    2. 構成ファイルをアプリのモジュール(アプリレベル)ディレクトリに移動します。

  2. アプリで Firebase プロダクトを有効にするには、Gradle ファイルに google-services プラグインを追加します。

    1. ルートレベル(プロジェクト レベル)の Gradle ファイル(build.gradle)に、Google サービス プラグインを含めるためのルールを追加します。Google の Maven リポジトリがあることも確認してください。

      buildscript {
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
        }
      
        dependencies {
          // ...
      
          // Add the following line:
          classpath 'com.google.gms:google-services:4.3.0'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)で、ファイルの末尾に以下の行を追加します。

      apply plugin: 'com.android.application'
      
      android {
        // ...
      }
      
      // Add the following line to the bottom of the file:
      apply plugin: 'com.google.gms.google-services'  // Google Play services Gradle plugin
      

アプリに Firebase SDK を追加する

サポートされている Firebase プロダクトを Android アプリに追加できます。Firebase 向け Google アナリティクス機能を提供するコア Firebase SDK(com.google.firebase:firebase-core)から始めることをおすすめします。

  1. モジュール(アプリレベル)の Gradle ファイル(通常は app/build.gradle)に、コア Firebase SDK の依存関係を追加します。

    dependencies {
     // ...
     implementation 'com.google.firebase:firebase-core:17.0.1'
    
     // Getting a "Could not find" error? Make sure that you've added
     // Google's Maven repository to your root-level build.gradle file
    }
    
  2. 省略可)使用する他の Firebase ライブラリの依存関係を追加します。

    一部の Android 向け Firebase SDK では、Kotlin 拡張ライブラリも提供されています。

  3. アプリを同期して、すべての依存関係に必要なバージョンがあることを確認します。

  4. アプリを実行して、Firebase の統合に成功したという確認を Firebase に送信します。

    デバイスログには、初期化が完了したという Firebase の確認が表示されます。ネットワークにアクセスできるエミュレータでアプリを実行した場合、Firebase コンソールでアプリの接続が完了したことが通知されます。

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

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

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

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

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

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

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

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

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

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

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

Java

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

Kotlin

/**
 * 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 fun onNewToken(token: String?) {
    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 登録トークンを追加] というラベルの付いたフィールドで、このガイドの前のセクションで取得した登録トークンを入力します。

  7. [テスト] をクリックします。

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

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

次のステップ

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

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

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

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