Android に Firebase Cloud Messaging クライアント アプリを設定する

Firebase Cloud Messaging の Android クライアント アプリを作成するには、Gradle で FirebaseMessaging API と Android Studio 1.4 以降を使用します。このページの説明では、Firebase を Android プロジェクトに追加する手順をすでに完了していることを前提としています。

FCM クライアントには Android 4.0 以降を実行している端末が必要です。またその端末には、Google Play ストア アプリがインストールされているか、Google API を使用して Android 4.0 が動作しているエミュレータが搭載されている必要があります。ただし、開発した Android アプリは Google Play ストア経由以外の手段でもデプロイできます。

Firebase と FCM SDK を設定する

  1. まだ追加していない場合は、Firebase を Android プロジェクトに追加します

  2. Android Studio でアプリレベルの build.gradle ファイルに FCM との依存関係を追加します。

    dependencies {
         compile 'com.google.firebase:firebase-messaging:11.0.4'
    }

アプリのマニフェストを編集する

アプリのマニフェストに次の追加を行います。

  • FirebaseMessagingService を継承したサービス。これは、バックグラウンド時にアプリで通知を受け取る処理よりも高度なメッセージ処理を行う場合に必要になります。フォアグラウンド時のアプリで通知を受け取る、データ ペイロードを受信する、アップストリーム メッセージを送信するなどの場合は、このサービスを継承する必要があります。
  • <service
        android:name=".MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
  • FirebaseInstanceIdService を継承し、登録トークンの作成、ローテーション、更新を処理するサービス。これは、特定の端末に送信したり、端末グループを作成したりするために必要です。
  • <service
        android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
  • (オプション)通知用のデフォルトのアイコン、色、通知チャネル(Android O での新機能)を設定する、アプリケーション コンポーネント内のメタデータ要素。着信メッセージで明示的にアイコン、色、通知チャネルを設定していない場合、Android ではこれらの値が使用されます。
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • Android アプリの機能にとって FCM が重要な場合、アプリの build.gradle で必ず minSdkVersion 8 以上を設定してください。こうすることで、Android アプリを正常に実行できない環境にはアプリをインストールできなくなります。

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

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

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

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

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

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

現在のトークンを取得する場合は、FirebaseInstanceId.getInstance().getToken() を呼び出します。トークンがまだ生成されていない場合、このメソッドは null を返します。

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

新しいトークンが生成されるたびに onTokenRefresh コールバックが呼び出されるため、そのコンテキストで getToken を呼び出すことにより、利用可能な最新の登録トークンに確実にアクセスできます。サービスをマニフェストに追加してから、次の例のように onTokenRefresh のコンテキスト内で getToken を呼び出して、値をログに記録します。

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

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

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

Google Play サービスのチェック

Play 開発者サービスの SDK に依存するアプリについては、Google Play 開発者サービス機能にアクセスする前に、互換性のある Google Play 開発者サービスの APK が端末にインストールされているかどうかをアプリが必ずチェックする必要があります。このチェックは、メイン アクティビティの onCreate() メソッドと onResume() メソッドの 2 か所で行うことをおすすめします。onCreate() では、チェックにパスしないとアプリを使用できないようにします。onResume() では、ユーザーが [戻る] ボタンなどの他の手段を使って実行中のアプリに戻った場合にもチェックされるようにします。

互換性のあるバージョンの Google Play 開発者サービスが端末にインストールされていない場合は、アプリで GoogleApiAvailability.makeGooglePlayServicesAvailable() を呼び出すことで、ユーザーが Google Play ストアから Google Play 開発者サービスをダウンロードできるようになります。

次のステップ

クライアント アプリの設定が完了すると、Notifications Composer でダウンストリーム メッセージを送信できるようになります。この機能は、ダウンロードして実行可能なクイックスタート サンプルで確認できます。

その他のより高度な動作をアプリに追加するには、インテント フィルタを宣言して、受信メッセージに応答するアクティビティを実装します。詳細については、アプリサーバーからメッセージを送信するためのガイドをご覧ください。

これらの機能を利用するには、サーバーの実装とサーバー プロトコル(HTTP または XMPP)、あるいは Admin SDK の実装が必要になることに注意してください。

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

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