首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCM应用服务器的用户多设备实现

GCM应用服务器的用户多设备实现
EN

Stack Overflow用户
提问于 2015-12-16 14:37:07
回答 3查看 162关注 0票数 2

对于如何管理所有应用程序安装的注册ids,我有点困惑。

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

但是,当应用程序重新安装时,Android被更新,或者发生了其他导致注册id更改的事情,应用程序将向我们的应用服务器发送一个新的注册id。但是我无法知道这是一个新的设备,或者是否应该用新的注册id更新现有的UserDevice。

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

EN

回答 3

Stack Overflow用户

发布于 2015-12-16 21:56:01

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

下次当您向此用户发送通知时,它将在不再使用的令牌上失败。现在,当您从google获得失败回复时,您所要做的就是从设备表中删除该令牌。

请记住,如果您由于诸如invalidRegID或NotRegistered等原因而未能发送到令牌,那么GCM将/已经取消该令牌注册,因此它是不好的,因此需要从您的列表中删除它,否则您将在google中找到用于重复发送到同一个失败令牌的坏书籍。所以删除那些失败的。

当我的应用程序启动时,我总是检查设备是否已注册,如果是的话,我会向我的应用服务器发送相同的令牌,以防它被删除。

希望这能有所帮助

票数 1
EN

Stack Overflow用户

发布于 2015-12-16 22:28:09

您可以查看GCM的设备组特性,它明确地针对“一个用户,多个设备”问题:https://developers.google.com/cloud-messaging/notifications

票数 1
EN

Stack Overflow用户

发布于 2015-12-16 15:03:11

我使用PushSharp,在那里我可以使用定义的不同事件处理程序来处理订阅更改或过期。源代码可以在github https://github.com/Redth/PushSharp/blob/master/PushSharp.Android/Gcm/GcmPushChannel.cs上使用,您可能可以将相同的逻辑应用于应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34314784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档