GcmReceiver无法获取具有字段“message_type”的有效负载的任何消息

时间:2016-03-10 19:36:34

标签: google-cloud-messaging

我的理解是有效载荷可以有任何字段名称,但看起来并非如此。在下面的代码中,如果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);

1 个答案:

答案 0 :(得分:1)

正如GCM Reference

所述
  

数据可选,JSON对象

     

.......

     

密钥不应该是保留字(“from”或任何单词起始   用“google”或“gcm”)。 请勿使用此处定义的任何字词   表(例如collapse_key)。

参考Downstream message XMPP message response body

  

message_type必填,字符串

     

此参数指定'确认'或   从XMPP连接服务器到应用服务器的“nack”消息。

     

如果该值设置为nack,则应用服务器应查看错误和   error_description获取失败信息。

message_type在参考表中定义,因此它是保留字。

所以

不要使用它。