【问题标题】:Send GCM push notification via notification_key (HTTP)通过 notification_key (HTTP) 发送 GCM 推送通知
【发布时间】:2014-08-01 15:10:27
【问题描述】:

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

正如docs 所说:

请求必须包含接收者——这可以是注册 ID、注册 ID 数组或 notification_key。必填。

第 3 方服务器可以使用 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"]}

我做错了什么?

【问题讨论】:

    标签: android google-cloud-messaging


    【解决方案1】:

    用户registration_ids 代替notification_key。您还需要添加数据 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"]
    }
    

    【讨论】:

    • 不幸的是,这不是一个正确的答案,因为我的主要问题是通过 notification_key 发送
    猜你喜欢
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 2015-03-08
    • 2016-01-01
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多