2015-08-17 153 views
0

我试图发送推送通知到多个android设备。发送推送通知到多个Android设备使用asp .net

对于一个设备它的工作,但是当我试图添加多个设备 registrationIDs那么它不; GCM返回错误= InvalidRegistration

var Message = tMessage.Text; //message text box 
      var Title = tTitle.Text; 
      string stringregIds = null; 
      List<string> regIDs = new List<string>(); 
      regIDs.Add(redIdEmulNew); 
      regIDs.Add(regIdMobileNew); 
      stringregIds = string.Join("\",\"", regIDs); 

      WebRequest tRequest; 

      tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send"); 

      tRequest.Method = "post"; 

      tRequest.ContentType = " application/x-www-form-urlencoded;charset=UTF-8"; 

      tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID)); 

      tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID)); 
      string postData = 
      "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message=" 
       + Message + "&data.title=" + Title + "&registration_id=" + 
       stringregIds + ""; 


      Byte[] byteArray = Encoding.UTF8.GetBytes(postData); 

      tRequest.ContentLength = byteArray.Length; 

      Stream dataStream = tRequest.GetRequestStream(); 

      dataStream.Write(byteArray, 0, byteArray.Length); 

      dataStream.Close(); 

      WebResponse tResponse = tRequest.GetResponse(); 

      dataStream = tResponse.GetResponseStream(); 

      StreamReader tReader = new StreamReader(dataStream); 

      String sResponseFromServer = tReader.ReadToEnd(); //Get response from GCM server. 

      lbResponse.Text = sResponseFromServer;  //Assigning GCM response to Label text 

      tReader.Close(); 

      dataStream.Close(); 
      tResponse.Close(); 

我怀疑下面的代码有问题:

string stringregIds = null; 
List<string> regIDs = new List<string>(); 
regIDs.Add(redIdEmulNew); 
regIDs.Add(regIdMobileNew); 
stringregIds = string.Join("\",\"", regIDs); 

两个设备注册ID是有效的,我已经分别检查推送通知。

由于

回答

1

搜索时间长,我发现“多播消息(发送至多于1个注册ID)使用HTTP JSON格式仅被允许”

这里是参考https://developers.google.com/cloud-messaging/server-ref#table1

和示例http://labs.distriqt.com/post/1223

string postData = 
"{ \"registration_ids\": [ \"" + stringregIds + "\" ], " + 
"\"data\": {\"title\":\"" + Title + "\", " + 
"\"message\": \"" + Message + "\"}}"; 
+0

tRequest.ContentType =“应用/ JSON“; - 设置正确的格式以符合Ashok建议的更改。 –

相关问题