【问题标题】:Tap Local Notifications isn't triggered点击本地通知未触发
【发布时间】:2017-08-07 10:27:13
【问题描述】:

在 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

【问题讨论】:

    标签: ios10 uilocalnotification appdelegate


    【解决方案1】:

    AppDelegate注册通知导入UserNotifications/UserNotifications.h框架,并在收到通知时使用通知代理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   #########//
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多