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

问题描述:

这适用于iOS 8及之前版本,因此它可能是iOS 9 beta中的一个错误 - 或者它是一种改变的行为。注册本地通知会返回UIUserNotificationTypeNone,用户在iOS9上选择“允许”后

请求允许用户发送本地通知后 -

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

     [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings]; 

和用户选择“允许”,application:didRegisterUserNotificationSettings:被称为与[notificationSettings types] == UIUserNotificationTypeNone

但是,下一次我运行registerUserNotificationSettings时,它将被调用正确的权限类型。

苹果公司的参考资料没有说明任何可能表明这是有意的,因此它可能是一个错误。

任何人都知道什么是问题或如何解决它?

就发现,苹果已经修改了他们的didRegisterUserNotificationSettings方法

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings 

- (void)application:(UIApplication * nonnull)application didRegisterUserNotificationSettings:(UIUserNotificationSettings * nonnull)notificationSettings 

不知道阉这将解决问题,但你可以试试。

+0

这并不是说,该方法被调用,所以它是正确的。另外我在Xcode上看不到'nonnull'... – Kof

可以解决这个问题(这有点儿看起来像一个bug)在application:didRegisterUserNotificationSettings:检查[application currentUserNotificationSettings]代替