点击本地通知未被触发

时间:2017-08-07 10:27:13

标签: ios10 uilocalnotification appdelegate

在iOS 10.3中,我将代码添加到AppDelegate

@interface AppDelegate () {
    UNUserNotificationCenter *center;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    center = [UNUserNotificationCenter currentNotificationCenter];
    UNAuthorizationOptions options = UNAuthorizationOptionAlert + UNAuthorizationOptionSound;
    [center requestAuthorizationWithOptions:options
                          completionHandler:^(BOOL granted, NSError * _Nullable error) {
                              if (!granted) {
                                  DLog(@"Something went wrong");
                              } else {
                                  DLog(@"Access Granted")
                              }
                          }];

    return YES;
}

我点按通知,但下面的方法没有被调用。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

1 个答案:

答案 0 :(得分:1)

注册UserNotifications/UserNotifications.h中的通知导入AppDelegate框架,并使用通知代理UNUserNotificationCenterDelegate在收到通知时回复通知。

@interface AppDelegate ()<UNUserNotificationCenterDelegate>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    //Notification Setup.
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        center.delegate = self;
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
            if( !error ){
                [[UIApplication sharedApplication] registerForRemoteNotifications];
            }
        }];
    } else {

        //register to receive notifications
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound) categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

    }


    return YES;
}

#ifdef __IPHONE_10_0
////####    iOS 10    #########//
//This is call when application is open.
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{
    NSLog(@"Userinfo %@",notification.request.content.userInfo);
}


//This is call when application is in background.
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
         withCompletionHandler:(void(^)())completionHandler
{
    NSLog(@"Userinfo %@",response.notification.request.content.userInfo);

    // Must be called when finished
    completionHandler();
}
#endif
////####    iOS 10  End   #########//