objective c - 当用户更改应用程序的通知设置时检测

Eya*_*yal 15 iphone objective-c appsettings push-notification apple-push-notifications

我需要始终知道用户在推送通知设置中选择了哪些选项.
(选项包括 - 警报,声音和徽章)

所以,当我的应用程序启动时,我打

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
Run Code Online (Sandbox Code Playgroud)

并检测用户选择的内容.

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

Gre*_*reg 22

没有代表.您需要定期查询UIApplication属性enabledRemoteNotificationTypes,例如在applicationDidBecomeActive:.

详情请查看以下答案:

如果用户已启用推送通知,请在iPhone上确定

在锁定屏幕和enabledRemoteNotificationTypes中查看 - iOS5

编辑:
如果您需要重置推送通知设置和权限警报,请查看Apple技术说明TN2265.在"重置iOS上的推送通知权限警报"部分中,他们解释了如何重置iOS上的设置.但是,许多开发人员抱怨该程序不起作用.不确定此链接是否有效,您将需要访问Apple论坛,但它是关于此确切问题的线索之一.

我本人想知道Apple是否已经删除了iOS 5.1中的权限对话框.否则他们为什么要求应用程序显示警报?根据AppStore评论指南:

5.3在未事先征得用户同意的情况下发送推送通知的应用程序将被拒绝

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

由于应用程序无法查询通知设置的状态,因此无法确定提示的目的是什么.特别是,应用程序可以检查enabledRemoteNotificationTypes启用或禁用特定应用程序的推送通知时启用了哪些通知类型(使用),而不是(顶部的Notification Center ON/OFF开关).至少这是iOS 5.1中的行为.即使用户禁用该应用程序的通知,应用程序仍然可以注册推送通知(使用registerForRemoteNotificationTypes)并且WILL将收到APNS令牌.


Nic*_*ull 7

当您的应用变为活动状态而不是仅在启动时检查它.