FCM の利用
Kii Cloud で FCM を使ったプッシュ通知を利用するため、以下の点を理解しておくことが適切です。
より詳細な情報は、Firebase のドキュメント を参照してください。
FCM の利用者の識別
FCM を使ってプッシュ通知を実現するため、開発者は Firebase コンソールからプロジェクトを作成し、割り当てられた Server key と送信者 ID を取得します。
FCM では、FCM を利用するユーザーアプリを FCM のプロジェクトの単位で管理しており、Server key と送信者 ID を使って識別します。
- Server key - Server key は、開発者のサーバーアプリケーションを識別するためのキーです。 - Server key は、開発者ポータルから Kii Cloud に登録します。Kii Cloud からプッシュ通知を行う際は、登録されている Server key を使って FCM サーバーにプッシュ通知のリクエストを行います。 - なお、Firebase の Server key は、開発者ポータルでは GCM API キーとして参照します。Kii Cloud では GCM と FCM を同じ扱いで処理します。 
- 送信者 ID - 送信者 ID は開発者のモバイルアプリから FCM 上のプロジェクトを識別するためのキーです。 - 送信者 ID は、Firebase コンソールからダウンロードできる google-services.json に含まれており、Android Studio 上でモバイルアプリのビルド時に指定します。モバイルアプリ内に組み込まれた Firebase のライブラリーは、送信者 ID を使ってモバイルアプリ側の制御を行います。 - Monaca プラグインで FCM を使用する場合は google-service.json を使わず、送信者 ID を直接指定しますが、仕組みはネイティブアプリで FCM を使用する場合と同様です。 

プッシュ通知の受信
モバイルアプリでプッシュ通知を受信するには、FCM と Google Play services のライブラリーを組み込んでモバイルアプリを構築します。
プッシュ通知の受信処理には、Android のサービスが利用されます。FCM ライブラリーでのプッシュ通知の受信処理や、モバイルアプリでの受信ハンドラーは、いずれもサービスを使って実装されるため、モバイルアプリがフォアグラウンドにない状態や、起動していない状態であっても、プッシュ通知の受信処理を実行することができます。
プッシュ通知は、AndroidManifest.xml に従って処理されます。FCM のライブラリーでプッシュ通知が受信され、最終的に FirebaseMessagingService のサブクラスに転送されます。開発者は、FirebaseMessagingService のサブクラスに、モバイルアプリで必要な機能を作り込みます。
なお、FCM のライブラリーは AndroidManifest.xml の設定を利用しますが、この設定は AndroidManifest.xml のマージ機能によってビルド時に自動的に書き換えられます。開発者の側で AndroidManifest.xml を詳細に設定する必要ありません。

FCM を利用するため、Google Play services が必要です。モバイルアプリにライブラリーを組み込んだうえで、デバイス上に Google Play 開発者サービスがインストールされている必要があります。
モバイルアプリが受け取るプッシュメッセージは、JSON 形式のデータです。メッセージには、FCM で定められたフィールドの他、アプリケーションで定義したカスタムデータを含めることもできます。
FCM/GCM のサンプルコード
FCM と GCM では、それぞれサンプルアプリを公開しています。GitHub のアドレスは以下のとおりです。
- GCM:https://github.com/googlesamples/google-services
- FCM:https://github.com/firebase/quickstart-android/tree/master/messaging
プッシュ通知のチュートリアルでは、それぞれこれらのサンプルアプリを Kii Cloud 用に改変した実装を使ってテストを行います。詳細はチュートリアルの解説(FCM、GCM)をご覧ください。
なお、FCM、GCM ともに、サンプルコードは Google からの配布時に Apache ライセンス 2.0 が適用されています。実際のモバイルアプリのスケルトンとしても利用できます。