从Android gcm服务器接收重复推送通知

从Android gcm服务器接收重复推送通知,android,notifications,push-notification,google-cloud-messaging,Android,Notifications,Push Notification,Google Cloud Messaging,我的应用程序当用户登录时,我从GCM获取设备令牌并注册我的服务器;如果用户注销,我从我的服务器删除设备令牌。当用户登录时,只有我需要接收通知。它的工作很好,但有一个测试用例收到了两次相同数据的重复通知 测试用例: `如果用户正在卸载应用程序或清除数据,则在“我推送通知”收到两个具有相同数据的通知时,用户在未注销的情况下登录。请再次安装已登录的应用程序。如何避免这种重复 如果用户清除了存储在设备上的数据,那么在客户端您就无能为力了。您可以为每个设备分配一个随机id,并将其存储在外部存储器中,当卸载

我的应用程序当用户登录时,我从GCM获取设备令牌并注册我的服务器;如果用户注销,我从我的服务器删除设备令牌。当用户登录时,只有我需要接收通知。它的工作很好,但有一个测试用例收到了两次相同数据的重复通知

测试用例:
`如果用户正在卸载应用程序或清除数据,则在“我推送通知”收到两个具有相同数据的通知时,用户在未注销的情况下登录。请再次安装已登录的应用程序。如何避免这种重复

如果用户清除了存储在设备上的数据,那么在客户端您就无能为力了。您可以为每个设备分配一个随机id,并将其存储在外部存储器中,当卸载应用程序或清除应用程序数据时,外部存储器不会被擦除。你的应用程序可以在本地存储中找不到该id时恢复该id。此Id可以与注册Id一起发送到服务器,有助于识别和防止同一设备在服务器中有两个注册Id的情况

如果你不能阻止这种情况,你仍然可以在收到来自谷歌的规范注册id后修复它,这将防止下次出现重复消息