私たちのプロジェクトは、登録 ID を単一の「通知キー」にグループ化して、ユーザーが所有するすべてのデバイスにメッセージを送信するために使用できる新しい GCMユーザー通知API をテストするためにホワイトリストに登録されています。
ただし、次のようなリクエストを送信すると:
POST /gcm/send
Authorization: key=…
Content-Type: application/json
{"notification_key": "…",
"data": {…}
}
エラー応答が表示されます。
400 Bad Request
Missing "registration_ids" field
registration_idsの代わりにフィールドを使用してメッセージを送信するnotification_keyと問題は解決しますが (メッセージが配信されます)、ユーザー通知 API を使用することの要点はnotification_key、registration_ids.
ドキュメントから:
registration_ids: […] リクエストには受信者が含まれている必要があります。これは、登録 ID、登録 ID の配列、または notification_key のいずれかです。必須。
notification_key: 1 人のユーザーを、そのユーザーに関連付けられた複数の登録 ID にマップする文字列。これにより、サードパーティ サーバーは、1 人のユーザーが所有する複数のアプリ インスタンス (通常は複数のデバイス上) に 1 つのメッセージを送信できます。サードパーティ サーバーは、個々の登録 ID (または登録 ID の配列) の代わりに、メッセージのターゲットとして notification_key を使用できます。[…] オプション。
上記の例では、 の HTTP 接続サーバーを使用していますhttps://android.googleapis.com。
これまでのところ、私は試しました:
- の空の配列を含めると、
registration_ids役に立ちません notification_keyフィールドの登録IDとして値を送信してregistration_idsも機能しませんproject_idヘッダーをプロジェクト番号に設定します(を作成するときに必要なためnotification_key)、まだうまくいきません- HTTP の代わりに CCS (XMPP) を使用して GCM API サーバーと通信しますが、残念ながらIP は Google App Engine でブロックされています
- と の両方
notification_keyをnotification_key_nameリクエストに含めても役に立ちません
更新:ここで提案されているように、JSON 要求ペイロードに含まれるプロパティ/gcm/notificationを使用して、ペイロードを に投稿しようとしました。"operation": "send"それでも助けにはなりません。今私は得る:
{"error":"Missing \"registration_ids\" field"}
同じことですが、今回は JSON でエンコードされて送り返されます。