GCM注册ID是否过期?

我知道C2DM注册过期了,你应该定期刷新注册ID。 这是GCM的情况吗? 通过在Android GCM指南(如下所示)上查看下面的代码,似乎你只做了一次,不需要刷新,但我没有看到明确写在任何地方,所以我只是想检查。

final String regId = GCMRegistrar.getRegistrationId(this); if (regId.equals("")) { GCMRegistrar.register(this, SENDER_ID); } else { Log.v(TAG, "Already registered"); } 

编辑:这个答案是出来的date,我没有想法什么是当前的行为


我自己find了答案。 根据文档中的示例,您并不需要一直重新注册。

另外, 与以前版本的GCM和C2DM不同的是 ,Google本身现在不会刷新注册信息:一旦从初始注册中获得注册ID, 除了一种情况 ,您还是可以随时注册的:您仍然需要重新注册用户升级到一个新的版本(这个案例也在上面的链接的例子中处理):

当应用程序更新时,它应该使其现有的注册ID无效,因为它不能保证与新版本一起工作。 由于应用程序更新时没有调用生命周期方法,因此实现此validation的最佳方法是在存储注册标识时存储当前的应用程序版本。

我认为最终会刷新,是的。 从官方文档:

现有的注册ID可能会在多种情况下停止有效,其中包括:如果应用程序通过发出com.google.android.c2dm.intent.UNREGISTER意图手动取消注册。 如果应用程序自动注销,如果用户卸载应用程序,可能会发生(但不能保证)。 如果注册ID过期。 Google可能会决定刷新注册ID。 对于所有这些情况,您应该从第三方服务器中删除此注册ID,并停止使用它来发送消息。 错误代码是NotRegistered时会发生。

这可能发生在您的第三方服务器的GCM请求中,该服务器返回带有错误未注册设备的json响应。

一旦发生这种情况,将由您来刷新相应的ID。

http://developer.android.com/guide/google/gcm/gcm.html