在Google Cloud Messaging的文档中,它指出:
Android应用程序应该存储此ID以供以后使用(例如,如果已经注册,则检查onCreate()).请注意,Google可能会定期刷新注册ID,因此您应该设计Android应用程序,并了解可能会多次调用com.google.android.c2dm.intent.REGISTRATION意图.您的Android应用程序需要能够做出相应的响应.
我使用以下代码注册我的设备:
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String regID = gcm.register(senderID);
Run Code Online (Sandbox Code Playgroud)
GoogleCloudMessaging类封装了注册过程.那么我想如何处理com.google.android.c2dm.intent.REGISTRATION,因为处理是由GoogleCloudMessaging类在内部完成的?
当为1个设备GCM具有多个regids时,返回规范id错误:
{"multicast_id":xxxx,"success":2,"failure":0,"canonical_ids":1,"results":[{"message_id":"xxxxx"},{"registration_id":"newest reg ID here","message_id":"xxxxxx"}]}
Run Code Online (Sandbox Code Playgroud)
所以它显示了GCM应该使用的最新regid,但为什么不显示你应该删除的regid(旧的)?我怎么知道旧的regid是什么以及我应该从我的数据库中删除哪一个?
我正在开发一个使用gcm的android项目.我开始知道,如果我们从设备上卸载app并重新安装,设备会获得新的注册ID.然后,如果我们不从应用程序服务器删除旧的并更新,则消息将发送到两个ID并且在响应它将显示规范ID存在.我的问题是,此时消息将成功发送到该设备或不?
我们有一个使用GCM的应用.当用户首次打开应用程序时,应用程序会检查共享首选项以查看用户是否先前已注册.如果注册ID不是从GCM获取并存储到共享首选项.还有一个第三方服务器,其中存储了用户ID和注册ID.我阅读并实现了以下针对规范id问题的案例:
作为开发人员,我们在数据库中存储了许多注册ID.因为我们经常卸载并安装应用程序.通常用户不会这样做.然后我们考虑使用设备ID作为设备的唯一ID,并检查用户是否先前注册过.可以使用Android设备ID吗?我应该考虑什么来防止设备的多个注册ID?这些多个注册ID会导致多次推送到Android设备.多个注册ID主要由以下原因引起:
处理规范ID的最佳做法是什么?