我正在使用新的GCM API进行注册。该方法的文档清楚地说明:
为GCM注册应用程序并返回注册ID。您必须在安装应用程序时调用此方法一次,并将返回的注册ID发送到服务器。
重复调用此方法将返回原始注册ID。
然而,在阅读本文时(http://developer.android.com/google/gcm/adv.html#reg-state),它指出有两种需要特殊处理的情况:
还有另外两种情况需要特别关注:
- 应用程序更新
- 备份和恢复
当应用程序更新时,它应该使其现有的注册ID无效,因为不能保证与新版本一起使用。
因此,开发人员什么时候应该使注册ID无效还不清楚。
此外,关于注销阶段,新的GCM API表示:
取消应用程序注册。调用unregister()停止来自服务器的任何消息。这是一个阻塞调用,你不应该从UI线程中调用它。你很少需要调用此方法(如果有必要的话)。它不仅在资源方面昂贵,而且使您的注册ID无效,您不应该不必要地更改它。更好的方法是让您的服务器停止发送消息。只有在想要更改您的sender ID时才使用取消注册。然而,之前的同一篇文章指出:
每当应用程序按照实现GCM客户端中所述进行注册时,它都应该保存注册ID以供将来使用,将其传递给第三方服务器完成注册,并跟踪服务器是否完成了注册。如果服务器未能完成注册,则应再次尝试或从GCM注销。
这也不清楚(即如何处理注销)。
最后,基于上述内容,Canonical ID与手机的关系也不清楚。如果Google为现有注册生成Canonical ID并将其传递回应用程序后端,则如果调用register方法,它还会更改手机的注册ID吗?移动设备有其他方式可以了解此新ID吗?
非常感谢您的提前帮助!