通过notification_key(HTTP)发送GCM推送通知

时间:2014-08-01 15:10:28

标签: android google-cloud-messaging

我正在尝试通过HTTP向多个用户的设备发送推送通知。

正如docs所说:

  

请求必须包含收件人 - 这可以是注册ID,注册ID数组或notification_key。必需的。

     

第三方服务器可以使用notification_key作为邮件的目标,而不是单个注册ID(或注册ID数组)。

简化代码:

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("project_id", PROJECT_ID);
conn.setRequestProperty("Authorization", "key="+AUTH_KEY);

JSONObject body = new JSONObject();
JSONArray ids = new JSONArray();
ids.add(NOTIF_KEY);
body.put("notification_key", ids);

conn.setDoOutput(true);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(new DataOutputStream(conn.getOutputStream())));
body.writeJSONString(wr);

wr.flush();
wr.close();

int respCode = conn.getResponseCode();

因此,我有400(错误请求)响应代码和"缺少" registration_ids"字段"错误信息。

我尝试包含空白的registration_id参数,并将NOTIF_ID放入其中,没有任何变化。

我的请求正文很简单,就像IE的空白页

一样
{"notification_key":["APA91bGm6LpfKo0_iPWIyUAtvYj7zMmdlMRN802wfsUeq8XaCThRbIcVXMIzwhL4MXr61522UppK--Qory2Zqa5e7o9thZo2tQYOYXBX8fP9sI3WpwSPSK0"]}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

而不是notification_key,用户registration_ids。您还需要添加数据JsonObject块以发送数据。

见下面的例子。

{ "collapse_key": "score_update",
  "time_to_live": 108,
  "delay_while_idle": true,
  "data": {
    "score": "4x8",
    "time": "15:16.2342"
  },
  "registration_ids":["4", "8", "15", "16", "23", "42"]
}