Android 应用程序在重新安装后使用GCM收到重复通知
我目前正在尝试使用GCM向用户发送通知,目前我仍在研究如何最大限度地利用它。现在,我只使用文档中提供的示例项目,并使用gcm客户机示例进行处理 现在,我尝试使用应用程序创建的注册ID来推送消息,是的,它成功地传递了消息 现在的问题是,在我卸载应用程序之后。重新安装后,它将生成一个新的注册ID,其中我将其与上一个注册ID一起存储在服务器上,但我不能标记上一个注册ID以不接收任何进一步的消息,因为当用户没有internet连接时,可能会发生卸载。之后,我向两个注册ID发送一条消息,这是卸载应用程序之前的ID和重新安装应用程序之后的ID。结果是,我收到了两条推送消息,尽管我希望它只收到一条,因为应用程序已经更改了注册ID 如果我也更新了应用程序,我预计该应用程序可能会收到两个或更多重复的应用程序,因为正如文档中所述,注册ID可能会在更新时更改Android 应用程序在重新安装后使用GCM收到重复通知,android,google-cloud-messaging,Android,Google Cloud Messaging,我目前正在尝试使用GCM向用户发送通知,目前我仍在研究如何最大限度地利用它。现在,我只使用文档中提供的示例项目,并使用gcm客户机示例进行处理 现在,我尝试使用应用程序创建的注册ID来推送消息,是的,它成功地传递了消息 现在的问题是,在我卸载应用程序之后。重新安装后,它将生成一个新的注册ID,其中我将其与上一个注册ID一起存储在服务器上,但我不能标记上一个注册ID以不接收任何进一步的消息,因为当用户没有internet连接时,可能会发生卸载。之后,我向两个注册ID发送一条消息,这是卸载应用程序之
我能做些什么来处理这些重复消息?重新安装后,您将得到新的RegId和prev不再有效。所以,即使您向两个regid发送push,也只有last会收到它 您可以在应用程序中为帐户实现逻辑 例如,当用户登录应用程序时,您发送他的GoogleId+RegId。重新安装应用程序并重新登录后,只需在服务器上更新RegId。因此,每个用户只能有一个RegId
有一个问题:只有一个设备将收到推送消息(如果您使用相同的帐户登录两个设备)。所以,您可以在启动应用程序后向服务器发送GoogleId+RegId+DeviceId。@KaHel当卸载客户端应用程序时,RegId将在一段时间内有效,您是对的。但是,当客户端应用程序将再次安装,并且推送服务器尝试使用旧注册id发送消息时,该消息将成功发送,但GCM服务器会将cannonical_id设置为作为响应。你应该用cannonical_id来纠正这个反应。我是怎么描述的,没有什么大问题。即,一旦您从GCM服务器获得cannonical_id,您应立即用新的值替换旧的注册id。它将允许您不为一个客户生成多个Regid,而只是一对一。来自官方文档: 客户端应用程序启动后可以自动注销 卸载。但是,此过程不会立即发生。什么 在这种情况下发生的情况是:
问题是,正如我在问题中提到的,以前的注册id仍然收到通知。我还以为它是无效的,不会再收到消息,但它仍然收到推送消息。好吧,我想我明白了。无论如何,应用程序应该对所有人开放。这意味着推送通知的设置为公用。如果我使用GoogleIDI,当用户更改登录名并生成两个id时,我可能仍然会遇到同样的问题。感谢您提供的信息。我会试着看一下我的日志。