サーバー環境と FCM

Firebase Cloud Messaging のサーバーサイドは、次の 2 つのコンポーネントで構成されています。

  • Google が提供する FCM バックエンド
  • サーバー側ロジックを実行するアプリサーバーやその他の信頼できるサーバー環境(Google によって管理される Cloud Functions for Firebase やその他のクラウド環境など)。

アプリサーバーや信頼できるサーバー環境は、FCM バックエンドにメッセージ リクエストを送信し、FCM バックエンドからユーザーのデバイスで実行されているクライアント アプリにメッセージがルーティングされます。

信頼できるサーバー環境の要件

アプリサーバー環境は次の条件を満たしている必要があります。

  • 適切にフォーマットされたメッセージ リクエストを FCM バックエンドに送信できること。
  • リクエストを処理し、指数バックオフを使用して再送信できること。
  • サーバーの認証情報とクライアント登録トークンを安全に保存できること。

Firebase プロジェクトに必要な認証情報

実装する FCM 機能によっては、Firebase プロジェクトから次の認証情報の取得が必要になる場合があります。

認証情報 説明
プロジェクト ID FCM v1 HTTP エンドポイントへのリクエストで使用される Firebase プロジェクトの一意の識別子。この値は、Firebase コンソールの [設定] ペインで確認できます。
登録トークン 各クライアント アプリ インスタンスを識別する一意のトークン文字列。単一のデバイスとデバイス グループへのメッセージングに必要になります。登録トークンは非公開にしなければならないことに注意してください。
送信者 ID <0 Firebase プロジェクトの作成時に作成される一意の数値。Firebase コンソールの [設定] ペインにある [Cloud Messaging] タブで確認できます。送信者 ID はプロジェクト番号と同じです。送信者 ID は、クライアント アプリにメッセージを送信できる各送信者を識別するために使用されます。
アクセス トークン HTTP v1 API へのリクエストを承認する短命な OAuth 2.0 トークン。このトークンは、Firebase プロジェクトに属するサービス アカウントと関連付けられています。アクセス トークンの作成とローテーションを行うには、送信リクエストを承認するの手順に沿って操作します。

サーバー オプションを選択する

FCM サーバーとの対話には Firebase Admin SDK または FCM HTTP v1 API の 2 つの方法があり、どちらを使用するか決定する必要があります。一般的なプログラミング言語で広くサポートされていること、認証や認可を簡単に処理できることから、Firebase Admin SDK を使用することをおすすめします。

FCM サーバーと対話するためのオプションは次のとおりです。

Firebase Admin SDK

Firebase Admin SDK は、バックエンドによる認証を処理し、メッセージの送信とトピック登録の管理を容易にします。Firebase Admin SDK を使用すると、次のことができます。

  • 個々のデバイスにメッセージを送信する
  • 1 つ以上のトピックに一致するトピックと条件文にメッセージを送信する
  • デバイス グループにメッセージを送信する
  • トピックに対してデバイスの登録と登録解除を行う
  • ターゲット プラットフォームの種類に合わせたメッセージ ペイロードを作成する

Firebase Admin SDK を設定するには、サーバーに Firebase Admin SDK を追加するをご覧ください。Firebase プロジェクトがすでに存在する場合は、まず SDK の追加を行ってください。また、プロジェクトの Cloud Messaging の設定ページで、Firebase Cloud Messaging API(V1)を有効にしておいてください。そのうえで Firebase Admin SDK をインストールすると、送信リクエストを作成するためのロジックの記述を開始できます。

FCM HTTP v1 API

FCM は、raw サーバー プロトコルを使用するデベロッパー向けに FCM HTTP v1 API を提供しています。

メッセージを送信するために、アプリサーバーは HTTP ヘッダーと、JSON Key-Value ペアで構成される HTTP 本文とを含む POST リクエストを発行します。ヘッダーと本文のオプションの詳細については、FCM HTTP v1 API を使用してメッセージを送信するをご覧ください。