我开发了一个使用GCM技术的应用程序,一切正常。GCM注册ID已更改
我观察到设备的注册ID在一段时间后发生了变化,这在我的应用中导致了一个问题,因为我的应用依赖于注册ID。
那么我如何才能为客户获得固定的注册ID?
我开发了一个使用GCM技术的应用程序,一切正常。GCM注册ID已更改
我观察到设备的注册ID在一段时间后发生了变化,这在我的应用中导致了一个问题,因为我的应用依赖于注册ID。
那么我如何才能为客户获得固定的注册ID?
我在here阅读时你GCM注册ID可能会改变的原因有二:
PS重新注册设备:以下旧答案的参考已经从谷歌的网页中删除,因此可能无效再
如果看到标题下的第二点上Architectural Overview页面启用GCM,它说:
注意,谷歌可能会定期刷新的注册ID,所以你 应该理解可以多次将 com.google.android.c2dm.intent.REGISTRATION意图调用 来设计您的Android应用程序。您的Android应用程序需要能够相应地响应 。
所以,处理,你应该有一个Broadcast Listener
它可以处理com.google.android.c2dm.intent.REGISTRATION
意向,其中谷歌发送到应用程序时,它必须刷新注册ID。广播接收器将具有带有意图的onReceive
方法。根据您的意图,您可以获得Bundle
,您可以使用它从Google提取新的注册ID。您可以将其保存并将其发送到第三方服务器,以替换您之前为该用户注册的ID。
另外你可能会看到this对In GoogleCloudMessaging API, how to handle the renewal or expiration of registration ID?这个问题回答。
讨论Should applications call gcm.register() every seven days to ensure valid registration IDs?问题也可能有些用处。
希望这可以帮助您了解如何处理它。
我认为你的报价不再有效。这段文字在Enable GCM标题下方不存在。 – Neil
'定期'刷新从未发生,注册刷新不包含在新的GCM库中。
注册ID更改的唯一已知原因是如果应用程序在升级过程中收到消息,则会自动取消注册的旧bug。在这个bug修复之前,应用程序在升级后仍然需要调用register(),到目前为止,在这种情况下注册ID可能会发生变化。显式调用unregister()通常也会更改注册标识。
建议/解决方法是生成您自己的随机标识符,例如保存为共享首选项。在每次应用升级时,您都可以上传标识符和潜在的新注册ID。这也可能有助于跟踪和调试服务器端的升级和注册更改。
我的应用程序有“AppUpdateReceiver”监听应用更新,推出“AppUpdateService”,它同步的FCM注册来解决此问题。 这是错误还是用最新的FCM库有关,我可以删除此代码,因为启动服务这样的棘手与奥利奥。 – Singed
[处理在谷歌云消息Android上登记ID的变化]的可能重复(http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android ) – trante
@trante这个问题很老旧,浪费时间。 – Micro