【问题标题】:Handle GCM Canonical Id with Amazon SNS使用 Amazon SNS 处理 GCM 规范 ID
【发布时间】:2015-06-12 03:08:56
【问题描述】:
我有问题。当 GCM 返回规范 id 时,我该如何处理。
我在 StackOverflow 上发现了几个相同的问题,但没有解决方案。 Amazon SNS 关于令牌管理的文档说 SNS 会自动处理这种情况。当 GCM 返回规范 id amazon SNS 时,用新令牌更新旧令牌。但我怎么知道呢?我有自己的数据库,其中包含所有已注册的令牌和端点。我不知道亚马逊是否更新了令牌并向所有人发送通知。结果导致设备上出现大量重复消息。
附:服务器必须支持一个帐户的多个设备。
【问题讨论】:
标签:
android
amazon-web-services
push-notification
google-cloud-messaging
amazon-sns
【解决方案1】:
只有在您的应用程序向他们注册时,Amazon SNS 才会处理令牌管理。由于您有自己的数据库和端点,因此您必须自己管理它。
从服务器推送消息后,您将在响应中收到规范 ID。
根据 Google 的文档,
规范的注册 ID 是最后一个注册令牌
客户端应用程序请求的注册。这是
服务器在向设备发送消息时应使用。
如果您尝试使用旧的注册令牌发送消息,GCM 将
像往常一样处理请求,但它将包含规范 ID
响应的registration_id 字段。确保更换
使用此规范 ID 存储在您的服务器中的注册令牌,如
最终旧的注册令牌将停止工作。
最好使用推送后返回的规范 id 更新您的注册 id。
此外,如果您的设备收到重复通知,这些可能会有所帮助:-
附:即使一个用户有多个设备,您的数据库映射也应该是这样的:- 用户的每个设备都将具有不同的注册令牌,并且每个令牌都将映射到单个用户。
由于令牌不同,因此在用户的所有设备上接收推送的相同消息将不成问题。
希望这会有所帮助!干杯!