在 iOS 设置中更改通知时,Amazon SNS disable/re-enable 设备如何?

How does Amazon SNS disable/re-enable devices when notifications are changed in iOS Settings?

我在基于 swift 的 iOS 应用程序中使用 Amazon SNS 进行移动推送通知和 AWS SDK。一切都很好,但是当我从 iOS 设置禁用通知然后我在设置中的应用程序条目下关闭通知时,我注意到一些奇怪的行为。如果我关闭通知,AWS SNS 控制台上的启用标志仍设置为 true

在某些情况下,启用标志会正确翻转为 false。在这些情况下,当我尝试在 iOS 设置中重新启用通知时,启用标志将 never 翻转回 true .知道为什么会这样吗?无论如何,有没有办法实时适当地设置它?

提前致谢。

Amazon SNS 禁用端点以响应来自 APNS 的指示推送令牌无效的反馈。 SNS 不知道设备上执行了什么操作使令牌无效;它只是根据 APNS feedback messages.

设置状态

您应该查看 Mobile Token Management 博客 post 以了解处理禁用端点的具体细节和最佳实践。

Amazon SNS与设备之间没有交互,SNS只与平台提供商(GCM、APNS、百度、WMS等)交互

终端节点可能在 Amazon SNS 中被禁用有以下几个原因:

  1. 设备令牌已更改您尚未使用新令牌更新端点。在这种情况下,推送通知将失败到此设备,因为当前端点令牌无效。根据 APNS 反馈,端点将被设置为 DISABLED。如果出现以下情况,设备令牌可能会发生变化:

    • 应用版本升级,i
    • iOS版本升级,或
    • 可能会在设备重置时出现。

这里的建议是通过将新获得的令牌与保存在 NSUserDefaults 存储中的令牌进行匹配,来验证应用程序在启动时所做的令牌更改,如果不同,则在更新 SNS 端点后在本地更新它。

这可能就是为什么当您在设备设置中重新启用通知时,“启用的标志将从不翻转回真实” .

  1. 设备所有者已删除该应用程序,并且在未安装该应用程序时,会向设备发送 SNS 通知。此时,APNS 提供无效令牌的反馈,端点被 SNS 禁用。由于禁用端点的 APNS 回调的异步性质,这最多可能需要 24 小时。

  2. SNS 通知发送到具有不是为应用程序或环境生成的令牌的端点。例如,端点是手动生成的,是 64 位长度的有效十六进制字符的随机组合。

  3. 如果带有发往应用程序沙盒 (APNS_SANBOX) 环境的有效令牌的 SNS 通知被无意中发送到生产 (APNS) 环境。在这种情况下,SNS 接受令牌但在第一次推送通知时失败,端点将根据 APNS 反馈被禁用。

Rohan 分享的 blog post 是移动令牌管理的重要资源。