在 iOS 设置中更改通知时,Amazon SNS 如何禁用/重新启用设备?

Posted

技术标签:

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

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

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

提前致谢。

【问题讨论】:

【参考方案1】:

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

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

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

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

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

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

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

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

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于在 iOS 设置中更改通知时,Amazon SNS 如何禁用/重新启用设备?的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.iOS 应用程序未运行时未处理 Amazon SNS 推送通知

如何在 Node JS 中使用 Amazon SNS 向 iOS 设备发送 VoIP 推送通知

自定义 Amazon SNS 电子邮件通知

Amazon SNS Apple 推送通知教程中的错误(空指针异常)

AMAZON AWS 我如何为端点订阅 SNS 主题?

使用 Amazon SNS 向 iOS 发送推送通知并使用本地化格式化字符串处理它们