Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 设备更新后更新GCM注册ID_Android_Push Notification_Google Cloud Messaging - Fatal编程技术网

Android 设备更新后更新GCM注册ID

Android 设备更新后更新GCM注册ID,android,push-notification,google-cloud-messaging,Android,Push Notification,Google Cloud Messaging,为了在用户升级其android版本后获得更新的注册ID,我是否需要先调用unregister注销原始注册ID,然后才能获得新的注册ID?您不必在再次注册到GCM之前取消注册,除非您更改了发件人ID(项目编号)用于注册。事实上,如果您使用相同的发件人ID注册,注册ID甚至可能保持不变。您不必这样做,如果您这样做,注册ID将保持不变 如果您想拥有一个全新的注册id,您需要使用另一个project-id进行注册。 此外,如果更改项目的包名称,注册id也会更改 如果Android设备更新为较新的Andr

为了在用户升级其android版本后获得更新的注册ID,我是否需要先调用unregister注销原始注册ID,然后才能获得新的注册ID?

您不必在再次注册到GCM之前取消注册,除非您更改了发件人ID(项目编号)用于注册。事实上,如果您使用相同的发件人ID注册,注册ID甚至可能保持不变。

您不必这样做,如果您这样做,注册ID将保持不变

如果您想拥有一个全新的注册id,您需要使用另一个project-id进行注册。
此外,如果更改项目的包名称,注册id也会更改

如果Android设备更新为较新的Android版本,例如从JellyBean到KitKat,则不需要更新注册ID

如果更新了应用程序,则必须更新注册ID。在这种情况下,您根本不需要取消注册,只需再次注册并清除本地存储中存储的先前ID


Android开发者页面上有一章写得很好,介绍了GCM高级主题。您应该对Eran感兴趣,并且

@Eran是绝对正确的。升级您的android版本不会更改gcm注册id。但有时可能是由于您的应用程序中的某些错误或卸载(然后再次重新安装应用程序)gcm可能会更改您的注册id。但幸运的是,gcm提供了
规范id
的概念。因此,我认为在这种情况下,您不需要
从gcm注销设备,但如果发生
规范id
,您需要正确处理

请参阅

规范ID

在服务器端,只要应用程序运行良好,一切都应该正常工作。然而,如果应用程序中的一个bug触发了同一设备的多个注册,则很难协调状态,最终可能会出现重复消息

GCM提供了一种称为“规范注册ID”的工具,可以轻松地从这些情况中恢复。规范注册ID定义为应用程序请求的最后一次注册的ID。这是服务器向设备发送消息时应使用的ID

如果稍后您尝试使用不同的注册ID发送消息,GCM将一如既往地处理该请求,但它将在响应的注册ID字段中包含规范注册ID。请确保使用此规范ID替换存储在服务器中的注册ID,因为您使用的ID最终将停止工作