是否可以要求 GCM 服务器无法向过期/过时的注册 ID 推送通知?
Posted
技术标签:
【中文标题】是否可以要求 GCM 服务器无法向过期/过时的注册 ID 推送通知?【英文标题】:Is possible to ask GCM server unable to push notification to expired/obsolete registration id? 【发布时间】:2015-10-23 04:32:49 【问题描述】:我正在开发一个使用GCM的android应用程序,当我升级应用程序版本时,我必须重新注册GCM注册ID,GCM服务器返回新注册。但是当向旧注册 ID 和新注册 ID 推送通知时,GCM 接受所有这些。 GCM 将返回响应“发送成功”,消息包括最新的注册 ID。
"multicast_id":4727651484309285125,"success":1,"failure":0,"canonical_ids":1,"results":["registration_id":"APA91bEVF3NWBSdTy9JuEAQCs3DEg-uLYR1F5j7v4_vmbW0ccsSDpEMLRF4SPoo2U4Ikqfn9oCyv4OYZnW6sUSBo_AjL6-07Ex3NX8vYgK0SSr6JriP4wkHF0a-WG2vRV5IAsg3gn7pY","message_id":"0:1445568030699378%9fffe997f9fd7ecd"]
可以要求 GCM 禁用旧注册,因此任何将消息推送到旧注册 ID 的尝试都将被拒绝。 我希望能够仅将通知推送到最新注册。 有人知道吗?
【问题讨论】:
据我所知,如果一个设备有多个注册 ID,gcm 会返回规范 ID,因此您的后端服务器应该用规范替换旧的注册 ID。在这种情况下,您将只存储新的 ID。更多这里developers.google.com/cloud-messaging/registration 【参考方案1】:在某些情况下,GCM 仍会向不应再使用的令牌发送消息。当您发送消息并接收规范 ID 时,这就是结果中的 registration_id。您应该通过删除在响应中产生规范 ID 的令牌来更新服务器端令牌列表,而改用规范 ID。
【讨论】:
以上是关于是否可以要求 GCM 服务器无法向过期/过时的注册 ID 推送通知?的主要内容,如果未能解决你的问题,请参考以下文章
如何从应用服务器向 GCM 服务器发送发送重新注册请求以注册设备?
GCM 设备 ID 是不是会过期,如果是,如何为 android 解决这个问题