使用Amazon SNS处理GCM规范ID

时间:2015-06-12 03:08:56

标签: android amazon-web-services push-notification google-cloud-messaging amazon-sns

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

P.S。服务器必须支持一个帐户的多个设备。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

仅当您的应用已使用他们注册时,Amazon SNS才会处理令牌管理。由于您拥有自己的数据库和端点,因此您必须自己管理它。

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

根据Google的文档,

  

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

     

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

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

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

  • 这可能是由于客户端应用程序中的错误导致同一设备的多个注册。因此,请确保同一设备未多次注册。

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

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

希望这有帮助!干杯!