【问题标题】:Sending Push Notification to multiple android devices using asp .net使用 asp .net 向多个 android 设备发送推送通知
【发布时间】:2015-08-17 05:55:48
【问题描述】:

我正在尝试向多个安卓设备发送推送通知。

对于一个设备它可以工作,但是当我尝试添加多个设备时 registrationIDs 然后它不是; GCM 返回 Error=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都有效,我已经单独检查了推送通知。

谢谢

【问题讨论】:

    标签: android asp.net google-cloud-messaging


    【解决方案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 + "\"}}";
    

    【讨论】:

    • tRequest.ContentType = "application/json"; - 设置正确的格式以配合 Ashok 建议的更改。
    猜你喜欢
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    相关资源
    最近更新 更多