注册本地通知会返回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
不知道阉这将解决问题,但你可以试试。
答
可以解决这个问题(这有点儿看起来像一个bug)在application:didRegisterUserNotificationSettings:
检查[application currentUserNotificationSettings]
代替
这并不是说,该方法被调用,所以它是正确的。另外我在Xcode上看不到'nonnull'... – Kof