FCM アーキテクチャの概要

FCM は、メッセージの作成、転送、受信を行う次のコンポーネント セットに依存します。

  1. メッセージ リクエストを作成または構築するためのツール。Notifications Composer には、通知リクエストを作成するための GUI ベースのオプションが用意されています。すべてのメッセージ タイプを完全に自動化してサポートするには、Firebase Admin SDK または FCM サーバー プロトコルをサポートする、信頼できるサーバー環境でメッセージ リクエストを構築する必要があります。その環境とは、Cloud Functions for Firebase、App Engine、または独自のアプリサーバーです。

    このページで説明する 3 つのアーキテクチャ レイヤの図。

  2. メッセージ リクエストを受け入れる機能などが搭載された FCM バックエンドは、トピックを介してメッセージのファンアウトを実行し、メッセージ メタデータ(メッセージ ID など)を生成します。

  3. メッセージをターゲット デバイスにルーティングするプラットフォーム レベルのトランスポート レイヤがメッセージ配信を処理し、必要に応じてプラットフォーム固有の構成を適用します。このトランスポート レイヤには以下が含まれます。

    • Google Play 開発者サービスを搭載した Android デバイス向けの Android トランスポート レイヤ(ATL)
    • Apple デバイス向けの Apple Push Notification Service(APNs)
    • ウェブアプリのウェブ push プロトコル

  4. ユーザーのデバイス上の FCM SDK では、アプリのフォアグラウンドまたはバックグラウンドの状態と、関連するアプリケーション ロジックに従って通知が表示されるか、メッセージが処理されます。

ライフサイクルの流れ

  • FCM からメッセージを受信するデバイスを登録します。クライアント アプリのインスタンスがメッセージを受信できるように登録を行い、アプリ インスタンスを一意に識別する登録トークンを取得します。
  • ダウンストリーム メッセージを送受信します
    • メッセージを送信します。アプリサーバーはクライアント アプリにメッセージを送信します。
      1. メッセージは Notifications Composer または信頼できる環境で作成され、メッセージ リクエストが FCM バックエンドに送信されます。
      2. FCM バックエンドはメッセージ リクエストを受信し、メッセージ ID とその他のメタデータを生成して、プラットフォーム固有のトランスポート レイヤに送信します。
      3. デバイスがオンラインの場合、メッセージはプラットフォーム固有のトランスポート レイヤを介してデバイスに送信されます。
      4. デバイス上で、クライアント アプリがメッセージまたは通知を受信します。