AWS SNS端点自行禁用

Ash*_*oel 3 push-notification amazon-sns

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

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

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

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

Ash*_*oel 7

在与AWS支持团队进行了长时间的对话之后,出现了一些问题.

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

现在,该怎么办?解决方案有两个部分:

  1. 每当您的应用程序启动时,您为其创建一个新的端点,执行该设备的整个SNS注册过程.这会导致使用GCM提供的最新设备端点更新SNS存储库.
  2. 假设用户没有启动应用程序很长时间.然后,您可以在SNS日志上放置Lambda,使用此Lambda可以确定何时禁用端点.对于此事件,您可以向设备发送静默通知,然后您的设备必须以静默方式在SNS上重新注册.

第二步涉及服务器和设备方面的大量工作.最后,我们决定不实施它,因为大多数用户都没有这样做,所涉及的工作也不合理.