Objective-C - 检测用户何时更改应用程序的通知设置

2024-03-15

我需要always了解用户在推送通知设置上选择哪些选项。
(选项有 - 警报、声音和徽章)

因此,当我的应用程序启动时,我调用:

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

并检测用户选择的内容。

但是,我如何检测用户是否在应用程序生命周期的后期更改了设置?
当此设置发生更改时是否有一些委托方法被调用?


没有代表。您需要查询UIApplication财产enabledRemoteNotificationTypes定期地,例如applicationDidBecomeActive:.

有关详细信息,请检查这些答案:

确定 iPhone 上用户是否启用了推送通知 https://stackoverflow.com/questions/1535403/determine-on-iphone-if-user-has-enabled-push-notifications

在锁定屏幕中查看并启用远程通知类型 - iOS 5 https://stackoverflow.com/questions/9276154/view-in-lock-screen-and-enabledremotenotificationtypes-ios5

Edit:
如果您需要重置推送通知设置和权限警报,请查看苹果技术说明 TN2265 https://developer.apple.com/library/archive/technotes/tn2265/_index.html。在部分“重置 iOS 上的推送通知权限警报”他们解释了如何在 iOS 上重置设置。然而,许多开发人员抱怨该过程不起作用。不知道这个链接 https://devforums.apple.com/message/648200#648200如果要工作,您将需要访问 Apple 论坛,但它是有关此确切问题的主题之一。

我自己想知道苹果是否在 iOS 5.1 中删除了权限对话框。否则为什么他们会要求应用程序显示警报?根据AppStore 审核指南截至 2016 年 6 月 https://web.archive.org/web/20160604100419/https://developer.apple.com/app-store/review/guidelines/:

5.3未经用户同意而发送推送通知的应用程序将被拒绝

例如,路径(应用程序)要求用户在注册过程中选择加入推送通知,而不是在应用程序第一次启动时。

无论如何,不​​确定提示的目的是什么,因为应用程序无法查询通知设置的状态。特别是,应用程序可以检查哪些通知类型(使用enabledRemoteNotificationTypes)已启用,但如果启用或禁用特定应用程序的推送通知(顶部的通知中心开/关开关)则不会。至少 iOS 5.1 中是这样的。即使用户禁用该应用程序的通知,该应用程序仍然可以注册推送通知(使用registerForRemoteNotificationTypes)并将收到 APNS 令牌。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C - 检测用户何时更改应用程序的通知设置 的相关文章

随机推荐