AWS SNS端点自行禁用

时间:2017-02-16 06:54:30

标签: push-notification amazon-sns

我已经设置了Android和iOS应用,以便能够通过SNS接收通知。设置工作正常,设备确实收到通知。但是后来,通知开始失败。

我已经为成功和失败方案启用了日志记录。根据日志,我不断收到表单错误:“端点被禁用:arn:aws:sns:myRegion:myAccount:endpoint / GCM / myApp / myDeviceEndpointHash”

我知道错误意味着端点被禁用。另外,我知道通过控制台和API重新启用端点的方法。

我的问题是为什么这种情况不断发生。我正在推送通知的99%的设备正在发生这种情况。提前谢谢。

1 个答案:

答案 0 :(得分:7)

经过与AWS支持团队的长时间对话后,出现了一些问题。

  1. GCM和APNS可以根据某些清理策略禁用您设备的终端。换句话说,设备的端点会发生变化,并且不受AWS的控制。
  2. 当GCM禁用您的设备端点时,它会在新端点和旧端点之间创建映射。使用此映射,它仍然可以通过旧端点提供通知。但是,这种映射仅存在一段时间。一旦这个映射消失了,通知就会开始失败。此外,当映射存在时,GCM向SNS提供警告消息,即端点很快将被禁用并且还提供新端点,但它只会被记录。
  3. 现在,该怎么办?该解决方案包含两部分:

    1. 每当您的应用启动时,您都会为其创建一个新的端点,随身携带 完成此设备的整个SNS注册过程。这导致 要使用最新设备端点更新的SNS存储库 由GCM提供。
    2. 假设用户没有长时间启动应用程序。然后,您可以使用此方法在SNS日志上放置Lambda Lambda您可以确定何时禁用端点。 对于此事件,您可以将静默通知推送到设备和 然后你的设备必须在SNS上静默重新注册。
    3. 第二步涉及很多工作,包括服务器端和设备端。最后,我们决定不实施它,因为大多数用户都没有这样做,所涉及的工作也不合理。