12

私たちのプロジェクトは、登録 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_keyregistration_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_keynotification_key_nameリクエストに含めても役に立ちません

更新:ここで提案されているように、JSON 要求ペイロードに含まれるプロパティ/gcm/notificationを使用して、ペイロードを に投稿しようとしました。"operation": "send"それでも助けにはなりません。今私は得る:

{"error":"Missing \"registration_ids\" field"}

同じことですが、今回は JSON でエンコードされて送り返されます。

4

3 に答える 3

10

ドキュメントにはバグがあります。次のリクエストを使用する必要があります。

curl -vvv -X POST --header "Content-Type: application/json" --header "project_id: <YOUR-PROJECT-ID>" --header "Authorization: key=<YOUR-PROJECT-SECRET-KEY>" --data @- "https://android.googleapis.com/gcm/send" << EOF
{ 
   "to": "<NOTIFICATION-ID>",
   "data": {},
}
EOF

詳細については、私のブログ投稿https://medium.com/appunite-edu-collection/d7df385b0ff4をご覧ください。

于 2014-08-07T13:30:24.307 に答える
0
    Have you got project_id for your project. 
    If yes then have you included same at proper place.

これをチェックしてください..

于 2013-11-08T06:46:20.983 に答える
0

この問題「HTTP/1.1 401 Unauthorized」にも遭遇しました。そして、API キーをブラウザ キーに置き換えることで問題を解決しました。

アプリケーションがクライアントで実行されている場合は、ブラウザ キーを使用します。

次のリンクを参照してください: https://developers.google.com/console/help/new/#generatingdevkeys

于 2013-12-03T11:13:12.883 に答える