iOS10推送通知适配

iOS10推送新增了UserNotifications Framework,使用起来其实很简单。

只是在iOS10以上系统上点击通知栏,回调方法不再走原来的这两个方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler {

}

而是在前台的时候回调

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void(^)(UNNotificationPresentationOptions))completionHandler

从后台进入的时候回调

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler

直接说怎么用吧:

1,导入头文件

#import

2,注册通知

#defineIOS8 ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0 && [[UIDevice currentDevice].systemVersion doubleValue] < 9.0)#defineIOS8_10 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 && [[UIDevice currentDevice].systemVersion doubleValue] < 10.0)#defineIOS10 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中

if(IOS10) {        UNUserNotificationCenter *center =[UNUserNotificationCenter currentNotificationCenter];        center.delegate =self;        [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError *_Nullable error) {if (!error) {                NSLog(@"succeeded!");            }        }];    }elseif(IOS8_10){//iOS8-iOS10        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert |UIUserNotificationTypeSound) categories:nil];        [application registerUserNotificationSettings:settings];        [application registerForRemoteNotifications];    }else{//iOS8以下        [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert |UIRemoteNotificationTypeSound];

}

3,回调方法中,获取通知数据(前台类似不做说明)

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler {

NSDictionary*userInfo =response.notification.request.content.userInfo;

//消息处理

}

4,对于本地通知没有什么变化依然会回调

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

你可能感兴趣的:(iOS10推送通知适配)