アプリサーバーが XMPP 接続サーバー プロトコルを実装している場合、ユーザーデバイスからクラウドへのアップストリーム メッセージを受信できます。アップストリーム メッセージを開始するには、クライアント アプリから次の要素を含むリクエストを送信します。
- 受信側アプリサーバーのアドレス(
SENDER_ID@fcm.googleapis.comの形式)。 - 送信者 ID ごとに一意なメッセージ ID。
- メッセージのペイロードの Key-Value ペアを構成するメッセージ データ。
このデータを受信すると、FCM は、送信側の端末とアプリに関するその他の情報を追加して、アプリサーバーに送信する XMPP スタンザを生成します。
Unity クライアント アプリからアップストリーム メッセージを送信する
サーバーにアップストリーム メッセージを送信する際、Unity クライアント アプリは次のようにメッセージを作成して Send を呼び出します。
Firebase.Messaging.Message message;
message.To = SENDER_ID + "@fcm.googleapis.com";
message.MessageId = get_unique_message_id();
message.Data["my_message", "Hello World");
message.Data["my_action", "SAY HELLO");
message.TimeToLive = kTimetoLive;
Firebase.Messaging.FirebaseMessaging.Send(message);
ここで
message.Toは受信側アプリサーバーのアドレスです(SENDER_ID@fcm.googleapis.comの形式)。message.MessageIdは一意のメッセージ識別子です。すべてのメッセージ レシーバー コールバックは、このメッセージ ID に基づいて識別されます。message.Dataは、文字列によるキーと値のマッピングです。message.TimeToLiveでは、デバイスがオフライン状態のときにメッセージを FCM のストレージに保持する期間(秒単位)を指定します。FCM は、この有効期限に達する前にメッセージを配信できなくなると、クライアントに通知を送信します。
FCM クライアント ライブラリは、メッセージをクライアント アプリにキャッシュし、クライアントがアクティブなサーバー接続を確立したときにこのメッセージを送信します。FCM 接続サーバーは、メッセージを受信すると、これをアプリサーバーに送信します。
アプリサーバーで XMPP メッセージを受信する
FCM は、クライアント アプリからアップストリーム メッセージング コールを受信すると、アップストリーム メッセージを送信するために必要な XMPP スタンザを生成します。FCM は category および from フィールドを追加してから、アプリサーバーに次のようなスタンザを送信します。
<message id="">
<gcm xmlns="google:mobile:data">
{
"category":"com.example.yourapp", // to know which app sent it
"data":
{
"hello":"world",
},
"message_id":"m-123",
"from":"REGID"
}
</gcm>
</message>
ACK メッセージを送信する
上記のようなアップストリーム メッセージへのレスポンスとして、アプリサーバーは同じ接続を使用して、一意のメッセージ ID を含む ACK メッセージを送信する必要があります。ACK を受信しないと、FCM はアプリサーバーへのメッセージの送信を再試行することがあります。
<message id="">
<gcm xmlns="google:mobile:data">
{
"to":"REGID",
"message_id":"m-123"
"message_type":"ack"
}
</gcm>
</message>
アップストリーム メッセージの構文の詳細については、XMPP 接続サーバー リファレンスをご覧ください。

