私たちのプロジェクトは、登録 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 でエンコードされて送り返されます。