我开发了一个应用程序,它围绕推送通知构建。仅当用户到达注册过程的某个点时,应用才会请求通知权限。我已经成功完成了以下工作:
NSUserDefaults
变量,指示是否需要在启动时注册推送(默认情况下:不是)-registerForRemoteNotificationTypes:
并在iOS 8上调用-registerUserNotificationSettings:
除非用户已启用推送通知,然后稍后在“设置”中将其禁用,否则此工作正常。在这种情况下,我尝试在启动时重新注册Push,它不会调用-application:didRegisterForRemoteNotificationsWithDeviceToken
或-application:didFailToRegisterForRemoteNotificationsWithError
。
其他信息,iOS 8的-isRegisteredForRemoteNotifications
也会返回YES
。 (我没有测试,但假设-enabledNotificationTypes
适用于iOS 7。)
如何检测此方案并向用户显示请求者,要求他在“设置”中重新启用通知?
答案 0 :(得分:6)
[[UIApplication sharedApplication] isRegisteredForRemoteNotifications];
返回一个布尔值,指示该应用当前是否已注册 用于远程通知。
声明SWIFT func isRegisteredForRemoteNotifications() - >布尔 Objective-C的 - (BOOL)isRegisteredForRemoteNotifications如果应用程序已注册远程通知并收到其设备令牌,则返回值YES 如果没有发生注册,失败或被拒绝,则为“否” 由用户。
讨论此方法仅反映成功完成 远程注册过程,从你打电话开始 registerForRemoteNotifications方法。这种方法没有反映出来 推送通知是否因连接而实际可用 的问题。 此方法返回的值会考虑到 用户接收推送通知的首选项。
可用性适用于iOS 8.0及更高版本。
我会向Apple提交错误报告。