注册本地通知会在用户选择“后返回UIUserNotificationTypeNone”;允许;关于iOS9

注册本地通知会在用户选择“后返回UIUserNotificationTypeNone”;允许;关于iOS9,ios,objective-c,uilocalnotification,xcode7,ios9,Ios,Objective C,Uilocalnotification,Xcode7,Ios9,这在iOS 8和之前的版本中已经起到了作用,所以这可能是iOS 9测试版中的一个bug,或者是一种改变了的行为 向用户请求发送本地通知的权限后- NSSet *categories = ...; UIUserNotificationType notificationTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;

这在iOS 8和之前的版本中已经起到了作用,所以这可能是iOS 9测试版中的一个bug,或者是一种改变了的行为

向用户请求发送本地通知的权限后-

        NSSet *categories = ...;
        UIUserNotificationType notificationTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
        UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:notificationTypes categories:categories];

        [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
当用户选择“允许”时,
应用程序:didRegisterUserNotificationSettings:
将使用
[notificationSettings types]==UIUserNotificationTypeNone
调用

但是,下次运行注册表通知设置时,将使用正确的权限类型调用它

苹果的参考资料没有说任何可能表明这是有意的,所以这可能是一个bug


有人知道问题是什么或者如何解决吗?

刚刚发现苹果修改了他们的
didRegisterNotificationSettings
方法


不知道这是否能解决问题,但你们可以试试

您可以通过检查
应用程序:didRegisterUserNotificationSettings:
中的
[application currentUserNotificationSettings]
来解决此行为(看起来有点像一个bug),而不是

方法被调用,因此它是正确的。另外,我在我的Xcode上看不到
nonnull
。。。
 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
- (void)application:(UIApplication * nonnull)application didRegisterUserNotificationSettings:(UIUserNotificationSettings * nonnull)notificationSettings