IOS10 远程推送适配详细介绍

IOS10 远程推送适配

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

建议看看极光推送的Demo,里面写的更详细。

只是在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,导入头文件

#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
#endif

2,注册通知

- (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_9){//iOS8-iOS9
  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;
   //消息处理
 if([request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
  //判断为远程推送
 }else {
  // 判断为本地通知
 }
}

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

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • iOS10 推送最新特性研究

    最近在研究iOS10关于推送的新特性, 相比之前确实做了很大的改变,总结起来主要是以下几点: 1.推送内容更加丰富,由之前的alert 到现在的title, subtitle, body  2.推送统一由trigger触发  3.可以为推送增加附件,如图片.音频.视频,这就使推送内容更加丰富多彩  4.可以方便的更新推送内容 import 新框架 添加新的框架 UserNotifications.framework #import <UserNotifications/UserNotificat

  • iOS10 适配远程推送功能实现代码

    iOS10正式版发布之后,网上各种适配XCode8以及iOS10的文章满天飞.但对于iOS10适配远程推送的文章却不多.iOS10对于推送的修改还是非常大的,新增了UserNotifications Framework,今天就结合自己的项目,说一说实际适配的情况. 一.Capabilities中打开Push Notifications 开关 在XCode7中这里的开关不打卡,推送也是可以正常使用的,但是在XCode8中,这里的开关必须要打开,不然会报错: Error Domain=NSCocoa

  • iOS10推送之基础知识(必看篇)

    前言 在北京时间9月14号凌晨1点,苹果正式推送iOS 10正式版,下面给大家详细的介绍iOS10推送的基础知识,在看完简单入门篇大家就可以简单适配了,然后再通过中级篇的内容,相信对大家学习理解有很大的帮助,下面话不多说了,来看看吧. 一.简单入门篇 相对简单的推送证书以及环境的问题,我就不在这里讲啦,我在这里说的,是指原有工程的适配. 1.首先我们需要打开下面的开关.所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟~ 之后,系统会生成一个我们以前没见过的文件,如图: 可能

  • iOS10全新推送功能实现代码

    从iOS8.0开始推送功能的实现在不断改变,功能也在不断增加,iOS10又出来了一个推送插件的开发(见最后图),废话不多说直接上代码: #import <UserNotifications/UserNotifications.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for

  • Xcode8以及iOS10适配等常见问题汇总(整理篇)

    随着iOS 10的更新以及Xcdoe 8的更新出现了很多问题,今天小编抽时间把我遇到的坑和大家分享下,一起看看吧. 1.访问权权限问题 iOS 10 开始对访问用户隐私权限更加严格,如果你不设置就会直接崩溃,解决办法都是在info.plist文件添加对应的Key-Value就可以了. PS:对应的value可以自定义填写 2.Xcode 8 运行打印一堆Log的解决办法 只要在Run->Arguments->Environment Variables 添加如下key-value值即可 OS_A

  • IOS10 解决权限崩溃问题详解

    今天 手机升级了 iOS10 Beta,然后用正在开发的项目 装了个ipa包,发现点击有关 权限访问 直接Crash了,并在控制台输出了一些信息: This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSContactsUsageDescription key wit

  • iOS10适配之权限Crash问题的完美解决方案

    升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列. 直入正题吧 今天在写 Swift 3 相关的一个项目小小练下手,发现调用相机,崩了.试试看调用相册,又特么崩了.然后看到控制台输出了以下信息: This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must cont

  • 更新了Xcode8 及 iOS10遇到的问题小结

    更新了Xcode8 以及 iOS10,App访问用户的相机.相册.麦克风.通讯录的权限都需要重新进行相关的配置,不然在Xcode8中打开编译的话会直接crash. 需要在info.plist中添加App需要的一些设备权限. 相机NSCameraUsageDescription 相册NSPhotoLibraryUsageDescription 通讯录NSContactsUsageDescription 始终访问位置NSLocationAlwaysUsageDescription 位置NSLocat

  • 110.iOS10新特性适配教程XCode8新特性解析

    iOS10 新特性 SiriKit SiriKit的功能非常强大,支持音频.视频.消息发送接收.搜索照片.预订行程.管理锻炼等等.在用到此服务时,siri会发送Intent对象,里面包括用户的请求和各种数据,可以对这个intent处理选择适当的响应. 这个功能主要是看这两个头文件(#import Proactive Suggestions 系统预先建议 背景就是iOS9的时候系统给予的主动建议会通过:Spolight搜索,Safari搜索,Handoff,或者siri建议. 在iOS10之后新增

  • iOS10开发和Xcode 8新特性及常见问题解析

    iOS 10 开发这次更新主要表现在以下这几个方面. 1.语音识别 苹果官方在文档中新增了API Speech,那么在以前我们处理语音识别非常的繁琐甚至很多时候可能需要借助于第三方框架处理,那么苹果推出了这个后,我们以后处理起来就非常的方便了,speech具有以下特点: 可以实现连续的语音识别 可以对语 音文件或者语音流进行识别 最佳化自由格式的听写(可理解为多语言支持)和搜索式的字符串 核心代码: #import <Speech/Speech.h> /** 语音识别同样的需要真机进行测试 ,

  • Xcode8、iOS10升级问题记录

    1.webView的代理方法: 升级前: - (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error 升级后: - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 要删除NSError前面的 nullable,否则报错. 2.关于触屏事件的一些操作: 升级前: - (void)touchesC

  • 解析iOS10中的极光推送消息的适配

    iOS10发布后,发现项目中的极光推送接收消息异常了. 查了相关资料后才发现,iOS10中对于通知做了不少改变.同时也发现极光也很快更新了对应的SDK. 现在就把适配修改的做法分享一下,希望对有需要的童鞋有所帮助. 具体做法如下: 注意:必须先安装Xcode8.0版本. 一.添加相关的SKD,或framework文件 1.添加UserNotification.framework 2.更新jpush的SDK(最新版本:jpush-ios-2.1.9.a)https://www.jiguang.cn

随机推荐