AWS SNS端点自行被禁用



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

我已经启用了登录成功和故障方案的记录。根据日志,我不断收到表格的错误:"端点是禁用的:ARN:AWS:SNS:MEREGION:MYACCOUNT:endpoint/gcm/gcm/myapp/mydeviceendpointhash" 知道错误意味着端点是禁用的。另外,我知道通过控制台和API重新实现端点的方法。

我的问题是为什么这会继续发生。我将通知的设备的99%发生了。预先感谢。

与AWS支持团队进行了长时间的对话后,有几件事浮出水面。

  1. GCM和APN可以根据某些清理策略禁用设备的端点。换句话说,设备的终点变化,并且无法控制AWS。
  2. 当GCM禁用您的设备端点时,它在新端点和旧端点之间创建映射。使用此映射,它仍然能够通过旧端点提供通知。但是,此映射只有很短的时间。一旦该映射就消失了,通知开始失败。另外,当映射存在时,GCM向SNS提供了警告消息,即端点很快将被禁用并提供了新的端点,但只会记录下来。

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

  1. 每当您的应用程序启动时,您都会为其创建一个新的端点,随身携带为此设备提供整个SNS注册过程。这导致将使用最新设备端点更新的SNS存储库由GCM提供。
  2. 假设用户在很长的时间内尚未启动该应用程序。然后,您可以在SNS日志上放置一个lambdaLambda您可以确定何时禁用端点。对于此事件,您可以将无线通知推向设备,并且然后,您的设备必须默默地重新注册自己。

第二步在服务器和设备方面都涉及大量工作。最后,我们决定不实施它,因为大多数用户不会发生它,并且涉及的工作是没有合理的。

最新更新