Android 使用JSON向GCM发送多个通知

Android 使用JSON向GCM发送多个通知,android,json,push-notification,google-cloud-messaging,Android,Json,Push Notification,Google Cloud Messaging,我想使用GCM一次向多个注册设备发送多个通知,我知道使用纯文本无法做到这一点,因为它一次只能用于发送一个设备的通知。因此,我决定使用JSON生成HTTP正文内容,并设法生成以下表示JSON对象的字符串: { collapse_key : my_CollapseKey, data.message : myMessage, registration_ids : ["regid1","regid2",...] } 但是,每当我发送请求时,我都会收到一个400

我想使用GCM一次向多个注册设备发送多个通知,我知道使用纯文本无法做到这一点,因为它一次只能用于发送一个设备的通知。因此,我决定使用JSON生成HTTP正文内容,并设法生成以下表示JSON对象的字符串:

{ collapse_key : my_CollapseKey, data.message : myMessage,  registration_ids : ["regid1","regid2",...] }
但是,每当我发送请求时,我都会收到一个400响应,它表明请求是错误的,当我参考它的文档时,它表明

响应400仅适用于JSON请求。指示无法将请求解析为JSON,或者该请求包含无效字段(例如,在需要数字的位置传递字符串)

以下是我在ASP.Net中开发的web应用程序的快照,用于发送请求:

request.ContentType = "application/json"
        request.Headers.Add("Authorization: key=My_Server_Key")
        request.Headers.Add("Sender: id=myProject_ID")
        Dim collapsKey = Guid.NewGuid.ToString("n")
        Dim data As String = "{ collapse_key : " + collapsKey + "," + " data.message : " + HttpUtility.UrlEncode(TextBox1.Text) + "}" + ", registration_ids : " + jsonids1 + "}"
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(data)
        request.ContentLength = byteArray.Length
        Dim dataStream As Stream = request.GetRequestStream
        dataStream.Write(byteArray, 0, byteArray.Length)
        dataStream.Close()
知道如何正确解析JSON对象并发送多个通知吗? 任何帮助都将不胜感激


关于

JSON应该如下所示:

{
  "registration_ids" : ["APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",...],
  "data" : {
    "Team" : "Portugal",
    "Score" : "3",
    "Player" : "Varela",
  },
}
您忘记为数据创建字典了

从GCM文档:

数据
一个JSON对象,其字段表示消息有效负载数据的键值对。如果存在,将显示有效负载数据 作为应用程序数据包含在意图中,密钥为 她叫什么名字。例如,“数据”:{“分数”:“3x1”}将导致 值为字符串3x1的额外命名分数。没有 限制键/值对的数量,尽管 消息的总大小(4kb)。值可以是任何JSON对象, 但我们建议使用字符串,因为值将转换为 GCM服务器中的字符串。如果要包括对象或 其他非字符串数据类型(如整数或布尔值),您有 您可以自己进行字符串转换。还要注意的是,该键不能 是保留字(来自或任何以google开头的字)。到 稍微复杂一点,有一些保留字(如 有效载荷数据中技术上允许的折叠(U键)。然而, 如果请求还包含单词,则请求中的值将 覆盖有效负载数据中的值。因此使用了 即使在某些情况下,也不建议在此表中定义为字段名 在技术上允许的地方。可选


是注册id还是注册id?因为我想在这里进行多次发送抱歉,将其固定为注册id。我按照您建议的方式尝试了,但没有成功,我真的没有理解您创建数据字典的意思。我的意思是,与其将
数据。message:myMessage
放在JSON中,您应该将
“数据”:{“消息”:“myMessage”}
。这将使数据键的值成为一个字典。GCM文档就是这么说的-。JSON中的所有字符串都应该使用引号,所以应该是:
{“registration_id”:[“APA91bGzn_0QP_hWt7f-whQKkAJ4-iuglrfqqqqa_sWcjvOZZ3v-5y5PSNFEPr‌​D-siR5WSyskTVaBST5LHDsIFCTZqY-ECTSPDBUEJGSTMABKSLKCONUJB5NGEQ\UUU3NCWRDRXF3WKKIRMB‌​E-TdHABDyRFGgJEJK-dQ“,“…”,“…”,“数据”:{“消息”:“Wlecome to the app”,},“折叠键”:“Wlecome_message”,}