Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

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

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

FCM の使用を開始するには、最も単純なユース ケースを作成します。アプリがデバイスのバックグラウンドにあるときに、通知コンポーザーから開発デバイスにテスト通知メッセージを送信します。このページには、セットアップから検証まで、これを実現するためのすべての手順が記載されています。FCM 用の Android クライアント アプリをセットアップしている場合は、既に完了している手順が含まれている場合があります。

SDK をセットアップする

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

あなたが始める前に

  • Android Studioを最新バージョンにインストールまたは更新します。

  • プロジェクトが次の要件を満たしていることを確認してください。

    • API レベル 19 (KitKat) 以上を対象としています
    • Android 4.4 以降を使用
    • 次のバージョン要件を満たすことを含むJetpack (AndroidX)を使用します。
      • com.android.tools.build:gradle v3.2.1 以降
      • compileSdkVersion 28以降
  • 物理デバイスをセットアップするか、エミュレーターを使用してアプリを実行します。
    Google Play サービスに依存する Firebase SDK では、デバイスまたはエミュレータに Google Play サービスがインストールされている必要があることに注意してください。

  • Google アカウントを使用して Firebase にサインインします。

Android プロジェクトをまだ持っておらず、Firebase 製品を試してみたいだけの場合は、クイックスタート サンプルのいずれかをダウンロードできます。

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

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

アプリを Firebase に登録する

Android アプリで Firebase を使用するには、アプリを Firebase プロジェクトに登録する必要があります。アプリを登録することは、多くの場合、アプリをプロジェクトに「追加する」と呼ばれます。

  1. Firebase コンソールに移動します。

  2. プロジェクトの概要ページの中央にあるAndroidアイコン ( ) または [アプリの追加] をクリックして、セットアップ ワークフローを起動します。

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

  4. (オプション)その他のアプリ情報を入力します:アプリのニックネームデバッグ署名証明書 SHA-1

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

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

  1. Firebase Android 構成ファイル ( google-services.json ) をダウンロードしてアプリに追加します。

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

    2. 構成ファイルをアプリのモジュール (アプリ レベル)ルート ディレクトリに移動します。

  2. google-services.json構成ファイルの値に Firebase SDK がアクセスできるようにするには、 Google サービス Gradle プラグイン( google-services ) が必要です。

    1. ルート レベル (プロジェクト レベル) のGradle ファイル ( <project>/build.gradle ) で、Google サービス プラグインをビルドスクリプトの依存関係として追加します。

      buildscript {
      
          repositories {
            // Make sure that you have the following two repositories
            google()  // Google's Maven repository
            mavenCentral()  // Maven Central repository
          }
      
          dependencies {
            ...
      
            // Add the dependency for the Google services Gradle plugin
            classpath 'com.google.gms:google-services:4.3.14'
          }
      }
      
      allprojects {
        ...
      
        repositories {
          // Make sure that you have the following two repositories
          google()  // Google's Maven repository
          mavenCentral()  // Maven Central repository
        }
      }
      
    2. モジュール (アプリ レベル) のGradle ファイル (通常は<project>/<app-module>/build.gradle ) に、Google サービス プラグインを追加します。

      plugins {
          id 'com.android.application'
      
          // Add the Google services Gradle plugin
          id 'com.google.gms.google-services'
          ...
      }
      

アプリに Firebase SDK を追加する

  1. モジュール (アプリ レベル) の Gradle ファイル(通常は<project>/<app-module>/build.gradle ) で、Firebase Cloud Messaging Android ライブラリの依存関係を追加します。ライブラリのバージョン管理には、 Firebase Android BoMを使用することをお勧めします。

    Firebase Cloud Messaging で最適なエクスペリエンスを得るには、Firebase プロジェクトでGoogle アナリティクスを有効にし、Google アナリティクス用の Firebase SDK をアプリに追加することをお勧めします。

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する

    Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。

    アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging:23.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Firebase Android BoMを使用すると、アプリは常に互換性のあるバージョンの Firebase Android ライブラリを使用します。

    (代替) BoM を使用せずに Firebase ライブラリの依存関係を追加する

    Firebase BoM を使用しないことを選択した場合は、依存関係の行で各 Firebase ライブラリ バージョンを指定する必要があります。

    アプリで複数のFirebase ライブラリを使用する場合は、BoM を使用してライブラリ バージョンを管理することを強くお勧めします。これにより、すべてのバージョンに互換性が確保されます。

    dependencies {
        // Add the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging-ktx:23.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    

  2. Android プロジェクトを Gradle ファイルと同期します。

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

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

アプリの最初の起動時に、FCM SDK はクライアント アプリ インスタンスの登録トークンを生成します。単一のデバイスをターゲットにするか、デバイス グループを作成する場合は、 FirebaseMessagingServiceを拡張し、 onNewTokenをオーバーライドして、このトークンにアクセスする必要があります。

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

登録トークンは、次の場合に変更される場合があります。

  • アプリは新しいデバイスに復元されます
  • ユーザーがアプリをアンインストール/再インストールする
  • ユーザーがアプリ データを消去します。

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

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

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // 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+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // 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

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(@NonNull 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
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Kotlin+KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration 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
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

トークンを取得したら、それをアプリ サーバーに送信し、任意の方法で保存できます。

テスト通知メッセージを送信する

  1. ターゲット デバイスにアプリをインストールして実行します。 Apple デバイスでは、リモート通知を受信する許可の要求を受け入れる必要があります。

  2. アプリがデバイスのバックグラウンドにあることを確認します。

  3. Firebase コンソールで、[メッセージング] ページを開きます。

  4. これが最初のメッセージである場合は、[最初のキャンペーンを作成する]を選択します。

    1. [ Firebase 通知メッセージ]を選択し、 [作成] を選択します。
  5. それ以外の場合は、[キャンペーン] タブで、[新しいキャンペーン]、[通知] の順に選択します。

  6. メッセージ本文を入力します。他のすべてのフィールドはオプションです。

  7. 右側のペインから [テスト メッセージの送信] を選択します。

  8. Add an FCM registration token というフィールドに、このガイドの前のセクションで取得した登録トークンを入力します。

  9. [テスト]を選択します。

[テスト] を選択すると、対象のクライアント デバイス (アプリがバックグラウンドにある) が通知を受け取るはずです。

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

次のステップ

フォアグラウンド アプリにメッセージを送信する

アプリがバックグラウンドにあるときに通知メッセージを正常に送信したら、「 Android アプリでメッセージを受信する」を参照して、フォアグラウンド アプリへの送信を開始してください。

通知メッセージを超えて

通知メッセージを超えて、他のより高度な動作をアプリに追加するには、次を参照してください。