我们有一个使用GCM的应用。当用户首次打开应用程序时,应用程序会检查共享首选项以查看用户是否先前已注册。如果注册ID不是从GCM获取并存储到共享首选项。还有一个第三方服务器,其中存储了用户ID和注册ID。我阅读并实现了以下针对规范id问题的案例:
作为开发人员,我们在数据库中存储了许多注册ID。因为我们经常卸载并安装应用程序。通常用户不会这样做。然后我们考虑使用设备ID作为设备的唯一ID,并检查用户是否先前注册过。可以使用Android设备ID吗?我应该考虑什么来防止设备的多个注册ID?这些多个注册ID会导致多次推送到Android设备。多个注册ID主要由以下原因引起:
处理规范ID的最佳做法是什么?
答案 0 :(得分:2)
为了处理用户卸载和重新安装应用程序(或清除应用程序数据)的情况,我会存储用户ID(或用于识别特定设备上的应用程序实例的任何标识符)在设备的外部存储器中。当用户卸载应用程序或清除应用程序数据时,此存储将不会被删除(用户仍然可以手动删除它,但您无法做到这一点)。
然后,当您启动应用程序时,如果共享首选项中没有用户数据,您将尝试从外部存储中恢复它。只有当它在外部存储器中不可用时,您才认为这是在新设备上新安装的应用程序并注册到GCM(此外,还建议您在新版本时重新注册到GCM您的应用已安装)。
如果客户端的所有处理都失败了,只要您在Google的回复中获得规范的注册ID,您仍然有机会从服务器中删除重复的注册ID。