使用 Amazon SNS 处理 GCM 规范 ID

Posted

技术标签:

【中文标题】使用 Amazon SNS 处理 GCM 规范 ID【英文标题】:Handle GCM Canonical Id with Amazon SNS 【发布时间】:2015-06-12 03:08:56 【问题描述】:

我有问题。当 GCM 返回规范 id 时,我该如何处理。 我在 *** 上发现了几个相同的问题,但没有解决方案。 Amazon SNS 关于令牌管理的文档说 SNS 会自动处理这种情况。当 GCM 返回规范 id amazon SNS 时,用新令牌更新旧令牌。但我怎么知道呢?我有自己的数据库,其中包含所有已注册的令牌和端点。我不知道亚马逊是否更新了令牌并向所有人发送通知。结果导致设备上出现大量重复消息。

附:服务器必须支持一个帐户的多个设备。

【问题讨论】:

任何 cmets 或只是缺点? 【参考方案1】:

只有在您的应用程序向他们注册时,Amazon SNS 才会处理令牌管理。由于您有自己的数据库和端点,因此您必须自己管理它。

从服务器推送消息后,您将在响应中收到规范 ID。

根据 Google 的文档,

规范的注册 ID 是最后一个注册令牌 客户端应用程序请求的注册。这是 服务器在向设备发送消息时应使用。

如果您尝试使用旧的注册令牌发送消息,GCM 将 像往常一样处理请求,但它将包含规范 ID 响应的registration_id 字段。确保更换 使用此规范 ID 存储在您的服务器中的注册令牌,如 最终旧的注册令牌将停止工作。

最好使用推送后返回的规范 id 更新您的注册 id。

此外,如果您的设备收到重复通知,这些可能会有所帮助:-

这可能是由于客户端应用程序中的错误触发了同一设备的多个注册。因此,请确保同一设备不会被多次注册。

此外,如果您从设备上卸载应用程序并尝试向该设备发送推送,您会从 GCM 服务器收到 NotRegistered 错误。那么您的服务器应该删除注册令牌,并且不再使用该注册令牌来推送消息。

附:即使一个用户有多个设备,您的数据库映射也应该是这样的:- 用户的每个设备都将具有不同的注册令牌,并且每个令牌都将映射到单个用户。 由于令牌不同,因此在用户的所有设备上接收推送的相同消息将不成问题。

希望这会有所帮助!干杯!

【讨论】:

【参考方案2】:

请查看http://mobile.awsblog.com/post/Tx223MJB0XKV9RU/Mobile-token-management-with-Amazon-SNS,了解有关如何管理移动令牌的信息。

【讨论】:

以上是关于使用 Amazon SNS 处理 GCM 规范 ID的主要内容,如果未能解决你的问题,请参考以下文章

Amazon SNS GCM 推送通知中没有标题

Amazon SNS GCM/FCM 消息负载

使用 Amazon SNS 在 Android GCM 中仅接收默认消息

向 Amazon SNS 移动推送服务注册移动/Android 终端节点

Amazon SNS - 如何知道该应用程序已被卸载?

Amazon SNS 静默推送