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#的主要内容,如果未能解决你的问题,请参考以下文章

GCM 会在 2.1 中崩溃 Android 应用程序吗?

Android GCM 注册失败。为啥?

GCM 用户通知:缺少“registration_ids”字段

Android GCM注册ID变更

GCM 响应是无效的 Android 应用注册 ID

无法在 Android 中取消注册 GCM