FCM アーキテクチャの概要

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

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

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

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

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

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

ライフサイクルの流れ

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