android - 每个用户使用多个设备的 GCM 应用服务器的实现

标签 android google-cloud-messaging

我对如何管理所有应用安装的注册 ID 有点困惑。

在应用服务器数据库中,我有一个 User 表和一个 UserDevice 表。每个用户可能有许多用户设备。每个UserDevice都有一个注册ID。因此,当应通知用户时,我会将消息发送到该用户的所有设备的所有注册ID

但是当应用程序重新安装、Android 更新或发生其他导致注册 ID 更改的情况时,应用程序将向我们的应用程序服务器发送新的注册 ID。但我无法知道这是否是设备,或者现有的 UserDevice 是否应使用新的注册 ID 进行更新。

这应该如何处理?我的第一个想法是发送持久硬件 ID 以及注册 ID,但也许有更好的方法?

最佳答案

这个你不用担心。如果用户确实重新安装了应用程序并且刷新了 token ,只需将其添加到用户的 token 列表中(暂时保留旧的 token )。

下次您向该用户发送通知时,它将因不再使用的 token 而失败。现在,当您收到 Google 的失败回复时,您所要做的就是从设备表中删除该 token 。

请记住,如果您由于 invalidRegID 或 NotRegistered 等原因未能发送到 token ,那么 GCM 将/已经取消注册该 token ,因此它不好,因此需要从您的列表中删除它,否则您将进入 google 的坏书用于重复发送到相同的失败 token 。因此删除那些失败的。

当我的应用程序启动时,我总是检查设备是否已注册,如果是,我会将相同的 token 发送到我的应用程序服务器,以防它以某种方式被删除。

希望这有帮助

关于android - 每个用户使用多个设备的 GCM 应用服务器的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34314784/

相关文章:

java - 在Android游戏中按分数对玩家姓名进行排序

android - 使所有 gcm token 无效

android - 在 GCM onMessage() 中显示对话框

android - 是否可以检测 Activity 是否暂停? (线程问题)

Android 背景图片适配屏幕无拉伸(stretch)

Android:监听方向变化?

Java图片处理库(想实现类似Apple Photo booth的拉伸(stretch)效果)

java - Android GCM 注册失败。为什么?

从 APN 迁移到 firebase 后未重新生成 iOS 设备 token

android - GCM 和 App 更新 : how re-register if app is not open after update?