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 プロジェクトに登録する必要があります。アプリを登録することは、多くの場合、アプリをプロジェクトに「追加する」と呼ばれます。
Firebase コンソールに移動します。
プロジェクトの概要ページの中央にあるAndroidアイコン (
) または [アプリの追加] をクリックして、セットアップ ワークフローを起動します。[ Android パッケージ名] フィールドにアプリのパッケージ名を入力します。
パッケージ名は、デバイスと Google Play ストアでアプリを一意に識別します。
パッケージ名は、アプリケーション IDと呼ばれることがよくあります。
モジュール (アプリ レベル) の Gradle ファイルでアプリのパッケージ名を見つけます。通常は
app/build.gradle
(パッケージ名の例:com.yourcompany.yourproject
) です。パッケージ名の値は大文字と小文字が区別されることに注意してください。この Firebase Android アプリを Firebase プロジェクトに登録した後は、この値を変更することはできません。
(オプション)その他のアプリ情報を入力します:アプリのニックネームとデバッグ署名証明書 SHA-1 。
アプリのニックネーム: Firebase コンソールでのみ表示される、内部の便利な識別子
デバッグ署名証明書 SHA-1 : SHA-1 ハッシュは、Firebase Authentication ( Google サインインまたは電話番号サインインを使用する場合) とFirebase Dynamic Linksで必要です。
[アプリを登録]をクリックします。
Firebase 構成ファイルを追加する
Firebase Android 構成ファイル (
) をダウンロードしてアプリに追加します。google-services.json [ google-services.json をダウンロード] をクリックして、Firebase Android 構成ファイルを取得します。
構成ファイルをアプリのモジュール (アプリ レベル)ルート ディレクトリに移動します。
Firebase 構成ファイルには、プロジェクトの一意であるが秘密ではない識別子が含まれています。この構成ファイルの詳細については、 Firebase プロジェクトを理解するをご覧ください。
Firebase 構成ファイルはいつでも再ダウンロードできます。
構成ファイル名に
(2)
のような追加の文字が追加されていないことを確認してください。
構成ファイルの値に Firebase SDK がアクセスできるようにするには、 Google サービス Gradle プラグイン(google-services.json google-services
) が必要です。ルート レベル (プロジェクト レベル) の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.15' } } allprojects { ... repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } }
モジュール (アプリ レベル) の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 を追加する
モジュール (アプリ レベル) の 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.2.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.1' 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.2.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.1' implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0' }
Android プロジェクトを Gradle ファイルと同期します。
Android Gradle プラグイン (AGP) v4.2 以前を使用する Gradle ビルドでは、Java 8 サポートを有効にする必要があります。そうしないと、Firebase SDK を追加するときに、これらの Android プロジェクトでビルド エラーが発生します。
このビルドの失敗を修正するには、次の 2 つのオプションのいずれかに従います。
- エラー メッセージに記載されている
compileOptions
をアプリ レベルのbuild.gradle
ファイルに追加します。 - Android プロジェクトの
minSdkVersion
を 26 以上に増やします。
この FAQで、このビルドの失敗について詳しく学んでください。
- エラー メッセージに記載されている
登録トークンにアクセスする
特定のデバイスにメッセージを送信するには、そのデバイスの登録トークンを知る必要があります。このチュートリアルを完了するには、通知コンソールのフィールドにトークンを入力する必要があるため、トークンをコピーするか、トークンを取得した後に安全に保管してください。
アプリの最初の起動時に、FCM SDK はクライアント アプリ インスタンスの登録トークンを生成します。単一のデバイスをターゲットにするか、デバイス グループを作成する場合は、 FirebaseMessagingService
を拡張し、 onNewToken
をオーバーライドして、このトークンにアクセスする必要があります。
このセクションでは、トークンを取得する方法と、トークンへの変更を監視する方法について説明します。トークンは最初の起動後にローテーションされる可能性があるため、最新の更新された登録トークンを取得することを強くお勧めします。
登録トークンは、次の場合に変更される場合があります。
- アプリは新しいデバイスに復元されます
- ユーザーがアプリをアンインストール/再インストールする
- ユーザーがアプリ データを消去します。
現在の登録トークンを取得する
現在のトークンを取得する必要がある場合は、 FirebaseMessaging.getInstance().getToken()
を呼び出します。
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() })
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(); } });
トークン生成の監視
onNewToken
コールバックは、新しいトークンが生成されるたびに発生します。
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) }
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); }
トークンを取得したら、それをアプリ サーバーに送信し、任意の方法で保存できます。
テスト通知メッセージを送信する
ターゲット デバイスにアプリをインストールして実行します。 Apple デバイスでは、リモート通知を受信する許可の要求を受け入れる必要があります。
アプリがデバイスのバックグラウンドにあることを確認します。
Firebase コンソールで、[メッセージング] ページを開きます。
これが最初のメッセージである場合は、[最初のキャンペーンを作成する]を選択します。
- [ Firebase 通知メッセージ]を選択し、 [作成] を選択します。
それ以外の場合は、[キャンペーン] タブで、[新しいキャンペーン]、[通知] の順に選択します。
メッセージ本文を入力します。他のすべてのフィールドはオプションです。
右側のペインから [テスト メッセージの送信] を選択します。
Add an FCM registration token というフィールドに、このガイドの前のセクションで取得した登録トークンを入力します。
[テスト]を選択します。
[テスト] を選択すると、対象のクライアント デバイス (アプリがバックグラウンドにある) が通知を受け取るはずです。
アプリへのメッセージ配信について詳しくは、 FCM レポート ダッシュボードを参照してください。このダッシュボードには、Apple および Android デバイスで送信および開封されたメッセージの数と、Android アプリの「インプレッション」(ユーザーが表示した通知) のデータが記録されています。
次のステップ
フォアグラウンド アプリにメッセージを送信する
アプリがバックグラウンドにあるときに通知メッセージを正常に送信したら、「 Android アプリでメッセージを受信する」を参照して、フォアグラウンド アプリへの送信を開始してください。
通知メッセージを超えて
通知メッセージを超えて、他のより高度な動作をアプリに追加するには、次を参照してください。