FCM は、メッセージの作成、転送、受信を行う次のコンポーネント セットに依存します。
- メッセージ リクエストを作成または構築するためのツール。Notifications Composer には、通知リクエストを作成するための GUI ベースのオプションが用意されています。すべてのメッセージ タイプを完全に自動化してサポートするには、Firebase Admin SDK または FCM サーバー プロトコルをサポートする、信頼できるサーバー環境でメッセージ リクエストを構築する必要があります。この環境は、Cloud Functions for Firebase、App Engine、または独自のアプリサーバーです。  
- メッセージ リクエストを受け入れる機能などが搭載された FCM バックエンドは、トピックを介してメッセージのファンアウトを実行し、メッセージ メタデータ(メッセージ ID など)を生成します。 
- メッセージをターゲット デバイスにルーティングするプラットフォーム レベルのトランスポート レイヤがメッセージ配信を処理し、必要に応じてプラットフォーム固有の構成を適用します。このトランスポート レイヤには以下が含まれます。 - Google Play 開発者サービスを搭載した Android デバイス向けの Android トランスポート レイヤ(ATL)
- Apple デバイス向けの Apple Push Notification Service(APNs)
- ウェブアプリのウェブ push プロトコル 
 
- ユーザーのデバイス上の FCM SDK では、アプリのフォアグラウンドまたはバックグラウンドの状態と、関連するアプリケーション ロジックに従って通知が表示されるか、メッセージが処理されます。 
ライフサイクルの流れ
- FCM からメッセージを受信するデバイスを登録します。クライアント アプリのインスタンスがメッセージを受信できるように登録を行い、アプリ インスタンスを一意に識別する登録トークンを取得します。
- ダウンストリーム メッセージを送受信します。
- メッセージを送信します。アプリサーバーはクライアント アプリにメッセージを送信します。- メッセージは Notifications Composer または信頼できる環境で作成され、メッセージ リクエストが FCM バックエンドに送信されます。
- FCM バックエンドはメッセージ リクエストを受信し、メッセージ ID とその他のメタデータを生成して、プラットフォーム固有のトランスポート レイヤに送信します。
- デバイスがオンラインの場合、メッセージはプラットフォーム固有のトランスポート レイヤを介してデバイスに送信されます。
- デバイス上で、クライアント アプリがメッセージまたは通知を受信します。
 
 
- メッセージを送信します。アプリサーバーはクライアント アプリにメッセージを送信します。