1. 始める前に
このコードラボでは、ユーザーがアプリをフォアグラウンドで使用しているか、アプリがバックグラウンドで使用しているかに関係なく、ユーザーと関わる機能を追加する方法を学びます。
前提条件
なし
学べること
- Android アプリに Firebase を追加する
- FCM と FIAM の依存関係を追加する
- テスト FCM メッセージをアプリに送信する
- テスト FIAM メッセージをアプリに送信する
必要なもの
- Androidスタジオ4.1
- Android デバイスまたはエミュレータ
2. 始めましょう
サンプルコードを入手する
コマンドラインから GitHub リポジトリのクローンを作成します。
スターターアプリをインポートする
Android Studio から、 codelab-fcm-and-fiam
ディレクトリ ( )。これは、前の手順 ( [ファイル] > [開く] > .../codelab-fcm-and-fiam) で複製されたものになります。
これで、Android Studio で FcmAndFiam プロジェクトが開いたはずです。 google-services.json ファイルが見つからないという警告が表示されても、心配する必要はありません。次のステップで追加されます。
3. Firebase コンソール プロジェクトを作成する
Firebaseをプロジェクトに追加する
- Firebase コンソールに移動します。
- [プロジェクトの追加]を選択します。
- プロジェクト名を選択または入力します。
- Firebase コンソールで残りのセットアップ手順に従い、 [プロジェクトの作成] (既存の Google プロジェクトを使用している場合は [Firebase を追加]) をクリックします。
- 新しいプロジェクトの概要画面で、Android アイコンをクリックしてセットアップ ワークフローを起動します。
- コードラボのパッケージ名を入力します:
com.google.firebase.codelab.fcmandfiam
google-services.json ファイルをアプリに追加します
パッケージ名を追加した後、[アプリの登録] をクリックし、[google-services.json をダウンロード] をクリックしてFirebase Android 構成ファイルを取得し、その google-services.json ファイルをプロジェクトのapp
ディレクトリにコピーします。ファイルがダウンロードされたら、 「スキップ」をクリックして、コンソールに表示される次のステップに進むことができます (これらのステップは build-android-start プロジェクトですでに行われています)。
アプリに google-services プラグインを追加する
google-services プラグインは、google-services.json ファイルを使用して、アプリケーションが Firebase を使用するように設定します。 google-services プラグインの依存関係とプラグイン自体は、それぞれプロジェクト レベルとアプリ レベルのビルド ファイルにすでに追加されている必要があります。次のエントリを確認します。
build.gradle
buildscript {
...
dependencies {
...
classpath 'com.google.gms:google-services:4.3.8'
}
}
アプリ/ビルド.gradle
plugins {
...
id: 'com.google.gms.google-services'
}
依存関係を追加する
FCM と FIAM には次の依存関係が必要です。これらの依存関係は、アプリ レベルのビルド ファイルにすでに追加されている必要があります。次の依存関係が追加されていることを確認します。
アプリ/ビルド.gradle
dependencies {
...
implementation platform('com.google.firebase:firebase-bom:28.4.2')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-inappmessaging-display'
}
プロジェクトをgradleファイルと同期する
すべての依存関係をアプリで確実に利用できるようにするには、この時点でプロジェクトを Gradle ファイルと同期する必要があります。 Android Studio ツールバーから[ファイル] > [プロジェクトを Gradle ファイルと同期]を選択します。
4. ログ識別子
Firebase Cloud Messaging と Firebase In App Messaging はどちらも識別子を使用してアプリにメッセージを送信します。 FCM は登録トークンを使用し、FIAM はインストール ID を使用します。
-
MainActivity.kt
で、TODO を以下のコードに置き換えて、メッセージの送信に必要な識別子をログに記録します。
FirebaseMessaging.getInstance().token.addOnCompleteListener { regTokenTask ->
if (regTokenTask.isSuccessful) {
Log.d(TAG, "FCM registration token: ${regTokenTask.result}")
} else {
Log.e(TAG, "Unable to retrieve registration token",
regTokenTask.exception)
}
}
FirebaseInstallations.getInstance().id.addOnCompleteListener { installationIdTask ->
if (installationIdTask.isSuccessful) {
Log.d(TAG, "Firebase Installations ID: ${installationIdTask.result}")
} else {
Log.e(TAG, "Unable to retrieve installations ID",
installationIdTask.exception)
}
}
- Android デバイスを接続し、 「実行」( )Android Studio ツールバー。 [Log Identifiers]ボタンをタップすると、FCM 登録トークンと Firebase インストール ID が logcat に記録されます。出力は次のようになります。
D/FcmAndFiam: Firebase Installations ID: emMc5...AsJfb
FCM registration token: emMc5LART6GV7...r0Q
5. テスト FCM メッセージを送信します
FCM メッセージは、Firebase コンソールと FCM REST API の両方から送信できます。このコードラボでは、FCM 通知メッセージを作成し、デバイスに送信します。通知メッセージは、システムの通知領域に表示されるメッセージです。次の方法でテスト FCM メッセージを送信します。
- アプリがバックグラウンドにあることを確認します (ホーム画面に移動します)。
- Firebase コンソールに移動し、左側のナビゲーションで[クラウド メッセージング]を選択します。
- 最初のメッセージを送信するを選択します
- メッセージのタイトルと本文を追加し、 [テスト メッセージの送信]をクリックします。
- FCM 登録トークンを追加し、 「テスト」をクリックします。
- デバイス上の表示通知を確認する
- 通知をタップするとアプリが開きます
6. テスト FIAM メッセージを送信する
Firebase In App Messaging は、さまざまなユーザー イベントの結果としてトリガーできます。テスト メッセージは、アプリのオープン イベントを使用してアプリ内メッセージをトリガーします。次の方法でテスト FIAM メッセージを送信します。
- アプリがバックグラウンドにあることを確認します (ホーム画面に移動します)。
- Firebase コンソールに移動し、左側のナビゲーションで [アプリ内メッセージング] を選択します。
- 「最初のキャンペーンを作成する」を選択します
- トップバナーキャンペーンを選択し、メッセージのタイトルと本文を入力します
- 「デバイスでテスト」をクリックします
- インストール ID を追加し、 「テスト」をクリックします
- アプリを再度開く
- アプリのメッセージで確認する
7. おめでとうございます
おめでとうございます。FCM メッセージと FIAM メッセージの両方が正常に送信されました。これで、ユーザーがアプリをフォアグラウンドで使用しているか、アプリがバックグラウンドで使用しているかに関係なく、ユーザーと関わる方法がわかりました。
参考文献
次は何ですか
- 独自の Android アプリでユーザーにメッセージを送信します。