【发布时间】:2014-07-29 14:08:33
【问题描述】:
我开发了一个应用程序,它围绕推送通知构建自身。仅当用户到达注册过程的某个点时,应用才会请求通知权限。我已经设法做到了以下几点:
- 应用维护了一个
NSUserDefaults变量,它指示是否需要在启动时注册推送(默认情况下:不需要) - 当注册达到那个点时,我翻转变量并在 iOS 7 上调用
-registerForRemoteNotificationTypes:在 iOS 8 上调用-registerUserNotificationSettings:
除非用户已经启用推送通知,然后稍后在“设置”中禁用它们,否则这可以正常工作。在这种情况下,我尝试在启动时重新注册 Push,它不会调用 -application:didRegisterForRemoteNotificationsWithDeviceToken 或 -application:didFailToRegisterForRemoteNotificationsWithError。
附加信息,iOS 8 的-isRegisteredForRemoteNotifications 也返回YES。 (我没有测试,但假设 -enabledNotificationTypes 适用于 iOS 7。)
我如何检测这种情况并向用户显示一个请求者,要求他在设置中重新启用通知?
【问题讨论】:
-
我也看到了这个问题,它似乎是一个错误。
-
@gklka 你能解决这个问题吗?我也面临这个问题。
-
@anoop4real,我也遇到了这个问题,这就是我为解决方法所做的:stackoverflow.com/a/32448982/1473984
-
@ewiinnnnn 感谢您的帮助,现在我知道始终获得 TRUE 的原因。我的目的是找出设置是否被用户手动关闭或设置从未存在,因此我需要执行某些操作。 NotificationTypes 在这两种情况下都将返回 None,因此我无法决定是尝试注册还是向用户显示设置链接。这是一个棘手的用例。
标签: ios objective-c ios8 push-notification apple-push-notifications