我的理解是有效载荷可以有任何字段名称,但看起来并非如此。在下面的代码中,如果jData有一个字段“message_type”,即使向GCM发送消息成功,android app也不会收到消息的推送通知(接收响应:{“message_id”:xxx})。我想某种方式“message_type”是由GCM内部使用的,所以我们永远不应该使用那个字段?
jGcmData.put("to", "/topics/global");
// What to send in GCM message.
jGcmData.put("data", jData);
// Create connection to send GCM Message request.
URL url = new URL("https://android.googleapis.com/gcm/send");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty(
"Authorization", "key=" + mContext.getString(R.string.google_server_api_key));
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestMethod("POST");
conn.setDoOutput(true);
答案 0 :(得分:1)
数据可选,JSON对象
.......
密钥不应该是保留字(“from”或任何单词起始 用“google”或“gcm”)。 请勿使用此处定义的任何字词 表(例如collapse_key)。
参考Downstream message XMPP message response body
message_type必填,字符串
此参数指定'确认'或 从XMPP连接服务器到应用服务器的“nack”消息。
如果该值设置为nack,则应用服务器应查看错误和 error_description获取失败信息。
message_type在参考表中定义,因此它是保留字。
所以