【问题标题】:How does Amazon SNS disable/re-enable devices when notifications are changed in iOS Settings?在 iOS 设置中更改通知时,Amazon SNS 如何禁用/重新启用设备?
【发布时间】:2016-03-08 14:30:43
【问题描述】:

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

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

提前致谢。

【问题讨论】:

    标签: ios swift push-notification amazon-sns


    【解决方案1】:

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

    一个终端节点在 Amazon SNS 中被禁用有几个原因:

    1. 设备令牌已更改,您尚未使用新令牌更新端点。在这种情况下,由于当前端点令牌无效,推送通知将失败到此设备。根据 APNS 反馈,端点将设置为 DISABLED。设备令牌可以在以下情况下更改:

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

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

    这很可能是为什么当您在设备设置中重新启用通知时,“启用的标志将从不恢复为 true”。

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

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

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

    Rohan 分享的blog post 是一个很好的移动令牌管理资源。

    【讨论】:

      【解决方案2】:

      Amazon SNS 会禁用终端节点以响应来自 APNS 的指示推送令牌无效的反馈。 SNS 不知道在设备上执行了哪些操作使令牌无效;它只是根据APNS feedback messages 设置状态。

      您应该查看Mobile Token Management 博客文章,了解处理禁用端点的细节和最佳实践。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 2017-12-19
        • 1970-01-01
        相关资源
        最近更新 更多