Android GCM Server错误:设备订阅已过期

时间:2013-09-24 21:04:21

标签: android push-notification google-cloud-messaging

在通过GCM向Android设备发送通知时,我收到以下回复:

设备订阅已过期:PushSharp.Android.GcmPushService - >的AppId

由于这个问题,我在手机上遇到了随机问题。例如,应用程序在接收器上接收额外的回调。

有人可以提供有关此错误的更多详细信息吗?什么时候发生?它与设备ID注册类似吗?需要做些什么来处理这种情况?

谢谢!

1 个答案:

答案 0 :(得分:5)

如果您查看GcmPushChannel.cs的代码,当Google返回DeviceSubscriptonExpiredException错误或NotRegistered时,您会看到CanonicalRegistrationId被返回。

由于您说您的应用程序在接收方上获得了额外的呼叫,因此您可能在数据库中拥有同一设备的多个注册ID,并且当您向所有这些设备发送消息时,您的设备会收到多条消息。这可以解释为什么您在Google的回复中获得规范的注册ID。

我不确定Push Sharp如何处理Canonical Registration ID。从我读过的小代码中,它可能会触发一个事件,允许您从数据库中删除旧的注册ID。