iOS接收远程通知响应方法
点击 iOS 接收远程推送主要牵扯到的方法有以下五种
(1) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
(2) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
(3) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
(4) - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler
(5) - (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
- 会在app启动完成调用
launchOptions保存了app启动的原因信息,如果app是因为点击通知栏启动的,可以在launchOptions获取到通知的具体内容。 - 会在接收到通知的时候调用,在最新的iOS 10中已经废弃,建议不再使用。
- 是在iOS 7之后新增的方法,可以说是 2 的升级版本,如果app最低支持iOS 7的话可以不用添加 2了。
其中completionHandler这个block可以填写的参数UIBackgroundFetchResult是一个枚举值。主要是用来在后台状态下进行一些操作的,比如请求数据,操作完成之后,必须通知系统获取完成,可供选择的结果有
typedef NS_ENUM(NSUInteger, UIBackgroundFetchResult) {
UIBackgroundFetchResultNewData,
UIBackgroundFetchResultNoData,
UIBackgroundFetchResultFailed
}
分别表示获取到了新数据(此时系统将对现在的UI状态截图并更新App Switcher中你的应用的截屏),没有新数据,以及获取失败。不过以上操作的前提是已经在Background Modes里面勾选了Remote notifications(推送唤醒)且推送的消息中包含content-available字段。
- 是 iOS 10 新增的
UNUserNotificationCenterDelegate代理方法,在 iOS 10的环境下,点击通知栏都会调用这个方法。 - 也是 iOS 10 新增的
UNUserNotificationCenterDelegate代理方法,在iOS 10 以前,如果应用处于前台状态,接收到推送,通知栏是不会又任何提示的,如果开发者需要展示通知,需要自己在 3 的方法中提取通知内容展示。在iOS 10中如果开发者需要前台展示通知,可以再在这个方法中completionHandler传入相应的参数。
typedef NS_OPTIONS(NSUInteger, UNNotificationPresentationOptions) {
UNNotificationPresentationOptionBadge = (1 << 0),
UNNotificationPresentationOptionSound = (1 << 1),
UNNotificationPresentationOptionAlert = (1 << 2),
}
总结:(最低系统环境为iOS 7)
- 当程序处于关闭状态的时候收到推送消息,点击应用程序图标无法获取推送消息, iOS 10 环境下,点击通知栏会调用 方法1与4。非iOS 10的情况下,会调用方法1与3。
- 当程序处于前台状态下收到推送消息,iOS 10的环境下如果推送的消息中包含
content-available字段的话执行方法3与4,否则只执行4。非iOS 10的情况下会执行方法3。 - 当程序处于后台收到推送消息,如果已经在
Background Modes里面勾选了Remote notifications(推送唤醒)且推送的消息中包含content-available字段的话,都会执行方法3。点击通知栏 iOS 10会执行方法4,非iOS10会执行方法3。
转自:https://www.jianshu.com/p/5bd30a890c90
iOS接收远程通知响应方法的更多相关文章
- iOS Notification – 远程通知
本文讲解iOS的远程通知的基本使用,主要包括远程通知的类型,处理远程通知的场景,以及远程通知相关证书的配置等等. 一.APNs简介 APNs是苹果公司提供的远程通知的服务器,当App处于后台或者没有运 ...
- iOS 左右滑动 手势 响应方法
1. @property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGestureRecognizer; @property (no ...
- iOS接收null的处理方法
常常server返回的数据,有null,还有nil,假设在模型层不处理的话,到时候数据展现时,一定会崩啊,近期决心要解决问题,所以查看了一些资料后,有答案了: - (id) setNoNull:(id ...
- ios开发——实用技术OC-Swift篇&本地通知与远程通知详解
本地通知与远程通知详解 一:本地通知 Local Notification的作用 Local Notification(本地通知) :是根据本机状态做出的通知行为,因此,凡是仅需依赖本机状态即可判 ...
- iOS 远程通知(Remote Notification)和本地通知(Local Notification)
ios通知分为远程通知和本地通知,远程通知需要连接网络,本地通知是不需要的,不管用户是打开应用还是关闭应用,我们的通知都会发出,并被客户端收到 我们使用远程通知主要是随时更新最新的数据给用户,使用本地 ...
- iOS(本地通知与远程通知)
iOS 推送通知有两种:本地推送.远程推送. 本地推送 : 在不需要联网的情况下,由APP发出推送,常用于某一时刻的通知,如闹钟.本地通送有局限性在于当APP处于后台或者退出时就无法发出通知. 远程 ...
- [Java] 两种发起POST请求方法,并接收返回的响应内容的处理方式
1.利用apache提供的commons-httpclient-3.0.jar包 代码如下: /** * 利用HttpClient发起POST请求,并接收返回的响应内容 * * @param url ...
- iOS开发系列--通知与消息机制
概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...
- 蓝牙接收苹果手机通知 ANCS协议分析
蓝牙接收苹果手机通知 ANCS协议分析 转载,请注明出处:http://www.cnblogs.com/alexcai/p/4321514.html 综述 现在有许多蓝牙手表.手环都能接收苹果ipho ...
随机推荐
- 小电流MOS管
N沟道: 2n7000 Id=0.35A 2n7002 Id=0.2A
- sklearn中xgboost模块中plot_importance函数(特征重要性)
# -*- coding: utf-8 -*- """ ######################################################### ...
- Atitit.java的浏览器插件技术 Applet japplet attilax总结
Atitit.java的浏览器插件技术 Applet japplet attilax总结 1. Applet类及各个方法说明 1 2. JApplet类示例 2 3. / 用main方法运行JAp ...
- Struts2动作
ActionContext 每一个请求的处理都在一个独立的线程中.每一个线程都有一个ActionContext对象.它包括了ValueStack和HttpServletRequest的东西. Stru ...
- 如何查看VisualStudio的编译, 链接命令
VisualStudio默认是不显示编译命令的,如何查看呢. 对于链接器: 项目属性 -> 配置属性 -> 链接器 -> 常规 -> 显示进度 -> 设为 "/ ...
- 重启tomcat但是session仍然有效的解决方法
参考:http://www.blogjava.net/freeman1984/archive/2010/03/30/316901.html server.xml,在你的webapp的Context节点 ...
- jquery几个按钮同时调用一个方法
- redis-cli 常用命令
1.连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 2.对value操作的命令 exists(key):确认一个key是否存在 del(key):删除一个key ...
- pip 使用技巧
指定豆瓣源安装 pip install configparser -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/si ...
- php 计算时间添加
$Date_1=date("Y-m-d");$Date_2="2015-10-11";$d1=strtotime($Date_1);$d2=strtotime( ...