GCM注册ID是否过期?

Moh*_*fez 43 android android-notifications google-cloud-messaging

我知道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");
}
Run Code Online (Sandbox Code Playgroud)

Moh*_*fez 41

编辑:这个答案是在日期之前,我没有想到当前的行为是什么


我自己找到了答案.根据文档中的示例,您不需要一直重新注册,只需重新注册一次.

此外,与之前版本的GCM和C2DM不同,Google本身现在不会刷新注册本身:一旦您从初始注册获得注册ID,您就可以去了,除了一个案例:您仍需要重新注册用户升级到新版本(此案例也在上面链接的示例中处理):

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

  • @AndroidGecko当我第一次写这个答案时,它是在GCM文档中,重新阅读文档现在它说注册程序已经改变(虽然旧的仍然有效),现在似乎Google**不**现在刷新注册ID.我已经更新了答案,以反映当前版本的GCM,好抓:) (2认同)

Iñi*_*igo 10

我认为它最终会更新,是的.来自官方文档:

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

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

一旦发生这种情况,您需要刷新相应的ID.

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