iOS10推送通知适配
2016-09-20 18:29
267 查看
iOS10推送新增了UserNotifications Framework,使用起来其实很简单。
只是在iOS10以上系统上点击通知栏,回调方法不再走原来的这两个方法
而是在前台的时候回调
从后台进入的时候回调
直接说怎么用吧:
1,导入头文件
#import <UserNotifications/UserNotifications.h>
2,注册通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中
3,回调方法中,获取通知数据(前台类似不做说明)
4,对于本地通知没有什么变化依然会回调
只是在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 <UserNotifications/UserNotifications.h>
2,注册通知
#define IOS8 ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0 && [[UIDevice currentDevice].systemVersion doubleValue] < 9.0) #define IOS8_10 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 && [[UIDevice currentDevice].systemVersion doubleValue] < 10.0) #define IOS10 ([[[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!"); } }]; } else if (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
相关文章推荐
- ios label上显示特殊字符 % "
- # iOS 10 适配 # 适配刷新控件 以MJRefresh 为例
- 《iOS开发笔记—文件的压缩与解压》
- 升级Xcode8,以及IOS 10带来的一些问题
- localeconv()
- iOS10--消息通知的基本使用
- ios修改textField的placeholder的字体颜色和大小
- iOS 统计项目代码行数
- iOS图片裁剪scale问题
- iOS 开发 - Xcode8下self.view.layer不能addSublayer,报错
- ios高德地图流程
- __BEGIN_DECLS 和 __END_DECLS 的理解
- ios实现加载框
- [iOS Xocd8] Xcode8 10大新特性
- iOS 高效添加圆角效果实战讲解
- iOS 应用内跳转到百度地图、苹果地图、谷歌地图、高德地图等
- 对iOS10新增Api的详细探究
- iOS 10 设备权限问题(相机,相册等)
- iOS开发中可以扫描到却无法连接蓝牙设备的解决办法
- iOS - 获取label内容的各行内容