Android GCM 缺少注册 C#
Posted
技术标签:
【中文标题】Android GCM 缺少注册 C#【英文标题】:Android GCM Missing Registration C# 【发布时间】:2015-03-28 20:56:59 【问题描述】:我正在尝试使用 Google GCM 实现推送通知,但是,当我尝试向 GCM 发送通知时,我收到了 MissingRegistration
错误。
到目前为止,我使用的是假注册 ID,但我认为在这种情况下会出现“找不到注册”之类的问题,对吧?
这是我的 C# 代码
public static void send(List<String> clientRegistrationIds, GcmData data)
WebRequest request = WebRequest.Create(SEND_URL);
// Headers.
request.Method = POST;
request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
request.Headers.Add(string.Format("Authorization: key=0", API_KEY));
request.Headers.Add(string.Format("Sender: id=0", SENDER_ID));
string postData = new javascriptSerializer().Serialize(new GcmRequest(clientRegistrationIds, data));
Console.WriteLine(postData);
Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse tResponse = request.GetResponse();
dataStream = tResponse.GetResponseStream();
StreamReader tReader = new StreamReader(dataStream);
String sResponseFromServer = tReader.ReadToEnd();
Console.WriteLine(sResponseFromServer);
tReader.Close();
dataStream.Close();
tResponse.Close();
序列化的 postData 变量:
"registration_ids":["123"],"data":"message":"New request!"
我的回答:
Error=MissingRegistration
我做错了什么?
谢谢!
编辑:将内容类型更改为application/json
有效。现在我得到了我所期待的错误:InvalidRegistration
。但是,application/x-www-form-urlencoded;charset=UTF-8
不应该是正确的 Content-Type?
【问题讨论】:
注册一个真实的设备并获得一个真正的 Id。无论如何,“123”太短了,真正的regids要长得多。 嗨。我已经编辑了我的问题。我已将content-type
更改为 application/json
并工作。但是,我很困惑,因为我读过application/x-www-form-urlencoded;charset=UTF-8
是正确的方法。不过谢谢!
【参考方案1】:
将 ContentType 更改为 application/json
并且有效。
【讨论】:
以上是关于Android GCM 缺少注册 C#的主要内容,如果未能解决你的问题,请参考以下文章