ビルド アプリサーバー送信リクエスト

メッセージを宛先に送る(「ターゲットに送る」)には、アプリサーバーは to キーに次のいずれかの値を設定する必要があります。

  • トピック名
  • 端末登録トークン
  • 端末グループ名

これらのターゲットに、事前定義済みフィールドまたはカスタムデータ メッセージを含む通知メッセージを送信することができます。 詳細については、メッセージ タイプをご覧ください。このページの例では、HTTP プロトコルと XMPP プロトコルでデータ メッセージを送信する方法を示しています。

特定の端末へのメッセージの送信

特定の端末にメッセージを送信するには、to キーを特定のアプリ インスタンスの登録トークンに設定します。登録トークンの詳細については、プラットフォームのクライアント設定情報をご覧ください。

HTTP POST リクエスト

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

HTTP レスポンス

{ "multicast_id": 108,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    { "message_id": "1:08" }
  ]
}

XMPP メッセージ

<message id="">
  <gcm xmlns="google:mobile:data">
    { "data": {
      "score": "5x1",
      "time": "15:10"
    },
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
  }
  </gcm>
</message>

XMPP レスポンス

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "from":"REGID",
      "message_id":"m-1366082849205"
      "message_type":"ack"
  }
  </gcm>
</message>

XMPP 接続サーバーには、レスポンス用の他のオプションもあります。サーバーの応答形式を参照してください。

ダウンストリーム メッセージをクライアント アプリに送信するときに使用可能なメッセージ オプションの完全なリストについては、選択した接続サーバー プロトコル(HTTP または XMPP)の参照情報をご覧ください。

トピックにメッセージを送信

サーバー側からの Firebase Cloud Messaging トピックへのメッセージの送信は、個々の端末やユーザー グループ宛てのメッセージの送信とよく似ています。アプリサーバーは to キーに /topics/yourTopic などの値を設定します。デベロッパーは、次の正規表現に一致するすべてのトピック名を選択できます。 "/topics/[a-zA-Z0-9-_.~%]+".

複数のトピックの組み合わせに送信する場合、アプリサーバーは condition キーに、対象のトピックを指定するブール条件を設定します。たとえば、TopicA と、TopicBTopicC のいずれかに登録された端末にメッセージを送信する場合は、次のようになります。

'TopicA' in topics && ('TopicB' in topics || 'TopicC' in topics)

FCM はまず、かっこ内の条件を評価し、次に左から右に式を評価していきます。上記の式では、いずれか 1 つのトピックだけに登録したユーザーはメッセージを受信しません。同様に、TopicA に登録していないユーザーはメッセージを受信しません。メッセージを受信するのは、次の組み合わせの場合のみです。

  • TopicA と TopicB
  • TopicA と TopicC

トピックの条件では、かっこの使用と、式ごとに 2 つの演算子の使用がサポートされています。

アプリサーバーのキーの詳細については、選択した接続サーバー プロトコル(HTTP または XMPP)の参照情報をご覧ください。このページの例では、HTTP と XMPP でデータ メッセージをトピックに送信する方法を示しています。

HTTP POST リクエスト

単一のトピックに送信します。

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "/topics/foo-bar",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!",
   }
}

「犬」や「猫」のトピックに登録された端末に送信します。

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "condition": "'dogs' in topics || 'cats' in topics",
  "data": {
    "message": "This is a Firebase Cloud Messaging Topic Message!",
   }
}

HTTP レスポンス

//Success example:
{
  "message_id": "1023456"
}

//failure example:
{
  "error": "TopicsMessageRateExceeded"
}

XMPP メッセージ

単一のトピックに送信します。

<message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "/topics/foo-bar",
      "message_id": "m-1366082849205" ,
      "data": {
          "message":"This is a Firebase Cloud Messaging Topic Message!"
      }
  }
  </gcm>
</message>

「犬」や「猫」のトピックに登録された端末に送信します。

<message id="">
  <gcm xmlns="google:mobile:data">
  {
    "condition": "'dogs' in topics || 'cats' in topics",
    "data": {
      "message": "This is a Firebase Cloud Messaging Topic Message!",
     }
  }
  </gcm>
</message>

XMPP レスポンス

//Success example:
{
  "message_id": "1023456"
}

//failure example:
{
  "error": "TopicsMessageRateExceeded"
}

FCM 接続サーバーが、トピック送信リクエストに成功または失敗のレスポンスを返すまでに、最大 30 秒の遅延が発生する可能性があります。それに応じて、リクエスト内でアプリサーバーのタイムアウト値を必ず設定してください。

メッセージ オプションの完全なリストについては、選択した接続サーバー プロトコル(HTTP または XMPP)の参照情報をご覧ください。

端末グループにメッセージを送信する

端末グループへのメッセージの送信は、個々の端末へのメッセージの送信とよく似ています。to パラメータを端末グループの一意の通知キーに設定します。ペイロード サポートの詳細については、メッセージのタイプをご覧ください。このページの例では、HTTP プロトコルと XMPP プロトコルで端末グループにデータ メッセージを送信する方法を示しています。

HTTP POST リクエスト

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{
  "to": "aUniqueKey",
  "data": {
    "hello": "This is a Firebase Cloud Messaging Device Group Message!",
   }
}

HTTP レスポンス

以下は「成功」の例です。notification_key には 2 つの登録トークンが関連付けられており、メッセージは両方のトークンに正しく送信されました。

{
  "success": 2,
  "failure": 0
}

以下は「一部成功」の例です。notification_key には 3 つの登録トークンが関連付けられています。メッセージは、そのうち 1 つの登録トークンだけに正しく送信されました。レスポンス メッセージには、メッセージを受信できなかった登録トークンがリストされます。

{
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

送信に失敗した場合、レスポンスには HTTP コード 503 が記され、JSON の本文はありません。notification_key に関連付けられた登録トークンにメッセージを配信できない場合、アプリサーバーは再試行します。

XMPP メッセージ

  <message id="">
  <gcm xmlns="google:mobile:data">
  {
      "to": "aUniqueKey",
      "message_id": "m-1366082849205" ,
      "data": {
          "hello":"This is a Firebase Cloud Messaging Device Group Message!"
      }
  }
  </gcm>
</message>

XMPP レスポンス

グループ内のいずれか 1 つの端末にメッセージが正しく送信されると、XMPP 接続サーバーは ACK で応答します。グループ内のすべての端末に送信されたメッセージがすべて失敗した場合は、XMPP 接続サーバーは NACK で応答します。

以下は「成功」の例です。notification_key に 3 つの登録トークンが関連付けられており、メッセージはそれらすべてに正しく送信されました。

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success": 3,
  "failure": 0,
  "message_id": "m-1366082849205"
}

以下は「一部成功」の例です。notification_key には 3 つの登録トークンが関連付けられています。メッセージは、そのうち 1 つの登録トークンだけに正しく送信されました。レスポンス メッセージには、メッセージを受信できなかった登録トークンがリストされます。

{
  "from": "aUniqueKey",
  "message_type": "ack",
  "success":1,
  "failure":2,
  "failed_registration_ids":[
     "regId1",
     "regId2"
  ]
}

FCM 接続サーバーがグループ内のすべての端末への配信に失敗すると、アプリサーバーは NACK レスポンスを受け取ります。

メッセージ オプションの完全なリストについては、選択した接続サーバー プロトコル(HTTP または XMPP)の参照情報をご覧ください。

フィードバックを送信...