Android C2DM注册ID更改频率

时间:2011-12-22 10:34:41

标签: android android-notifications android-c2dm

我已经构建了Android应用程序(尚未在Market中),我正在努力弄清楚为什么C2DM会失败。我能够注册我的设备,并且我收到了注册ID。

我构建了一个服务器应用程序,将请求提交给谷歌的C2DM服务器,我收到了200响应和消息ID。 (成功)。问题是,我的设备永远不会收到消息。

让我感到惊讶的一件事是,如果我尝试在几秒钟内注册一次设备,我就会获得不同的注册ID。他们很可能将时间用作种子。

此注册ID经常更改是否正常?任何线索/建议(我已阅读指南)?

干杯...

注意: 我没有SIM卡,我使用的只是企业WiFi网络。我最后的希望是,我的网络可能已关闭端口5228。

5 个答案:

答案 0 :(得分:2)

谷歌表示,C2DM将随时改变。因此,您必须使用设备的正确注册ID更新服务器。如果ID服务器与谷歌发送给您设备的服务器不匹配,则无法提供推送。

因此,作为一个黄金法则,“只要你得到它就会用最新的c2dm注册ID更新服务器”

如果Google回复200,则正文应包含ID。如果有错误,则正文中会有错误。错误代码如下。

  • QuotaExceeded - 发件人发送的邮件过多。一段时间后重试。
  • DeviceQuotaExceeded - 发件人向特定设备发送的邮件过多。一段时间后重试。
  • MissingRegistration - 缺少registration_id。发件人应始终将registration_id添加到请求中。
  • InvalidRegistration - 错误的registration_id。发件人应删除此registration_id。
  • MismatchSenderId - registration_id中包含的sender_id与用于向C2DM服务器注册的发件人ID不匹配。
  • NotRegistered - 用户已卸载应用程序或已关闭通知。发件人应停止向此设备发送邮件并删除registration_id。客户端需要重新注册c2dm服务器才能再次接收通知。
  • MessageTooBig - 消息的有效负载太大,请参阅限制。减少消息的大小。
  • MissingCollapseKey - 需要折叠键。在请求中包含折叠键。

此信息来自http://code.google.com/android/c2dm/#testing

答案 1 :(得分:1)

是的,正如Rihan所说,每次您注册设备时,您都会获得一个新的registration ID。如果您获得registration ID,那么您的c2dm已成功通过Google服务器实施。现在您必须发送此信息您的服务器的ID。通过使用此ID,您可以向设备发送推送通知。

现在您将在C2DReceiver的OnReceive()方法中收到消息,您必须处理此消息(可以向用户发送通知)

答案 2 :(得分:1)

问题是端口5228在我使用的网络上关闭了。

答案 3 :(得分:0)

我有类似的问题,问题是在应用程序中我没有发送用于注册C2DM消息的正确电子邮件地址。所以它一直在失败。

因此,当从设备注册C2DM时,请检查您是否发送了正确的电子邮件地址作为发件人电子邮件地址,该设备是向谷歌注册的用于推送通知的电子邮件地址。

答案 4 :(得分:0)

虽然Rihan是正确的。注册ID每次都会更改。我没有收到消息的原因是因为端口被锁定了。

对于其他googlers,请确保在发疯之前5228已经开放...