我正在尝试更新到 NSUserNotifications。
我已经改变了我的代码的编写方式并改变了它的位置,但同样的事情一直在发生。
在我的另一个视图控制器.h
#import <UserNotifications/UserNotifications.h>
#import <UserNotifications/UNUserNotificationCenter.h>
@interface AnotherViewController : UIViewController <UNUserNotificationCenterDelegate>
{
UNAuthorizationOptions UNAuthorizationOptionBadge;;
UNAuthorizationOptions UNAuthorizationOptionAlert;
UNAuthorizationOptions UNAuthorizationOptionSound;
}
@property(readonly, copy) NSString *localizedDescription;
在我的另一个视图控制器.m
@synthesize localizedDescription;
-(void)viewDidAppear:(BOOL)animated;{
[super viewDidAppear:YES];
NSLog(@"viewDidAppear");
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
[center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
if (@available(iOS 14.0, *)) {
if (settings.authorizationStatus == UNAuthorizationStatusEphemeral) {
NSLog(@"Ephermeral");
}
else if (settings.authorizationStatus == UNAuthorizationStatusProvisional) {
NSLog(@"provisional");
}
else if (settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
NSLog(@"authorized");
}
else if (settings.authorizationStatus == UNAuthorizationStatusDenied) {
NSLog(@"denied");
}
else if (settings.authorizationStatus == UNAuthorizationStatusNotDetermined) {
NSLog(@"Not determined");
[center requestAuthorizationWithOptions:(self->UNAuthorizationOptionBadge|self->UNAuthorizationOptionAlert|self->UNAuthorizationOptionSound)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (! error) {
NSLog(@"success");
}
else {
NSLog(@"desc%@",self.localizedDescription);
}
}];
}
}
else {
NSLog(@"earlier");
}
}];
在我的日志中,我得到未确定然后成功。
if (! error){NSLog(@"success");}
因此,即使状态为未确定,应用程序也会调用该方法,但不会显示请求权限的警报。
仍然不确定为什么会这样。