概述
- 后台远程推送 iOS7开始允许应用收到通知后直接在后台(background)状态下运行一段代码,而无需用户点击,可用于从服务器获取内容更新。
使用场景:Email更新,基于通知的订阅内容提前同步等功能,提升了终端用户的体验。
设置: 1.发送时:推送内容中设置
”content-available”:1
2.接收时:使用iOS7新API接收通知- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
注意: 使用后台推送通知,需要设置后台模式(Target -->Capabilities -->Background Modes下勾选Remote notifications)
代理方法:
#pragma mark - 推送通知(远程推送通知) /** * 已经接收到远程通知后调用 * * @param application 应用对象 * @param userInfo json字符串转成的字典 */ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ } /** * 已经接收到后台远程通知后调用 (如果实现了该方法,默认的接收通知的方法就不会再被调用didReceiveRemoteNotification↑) * * @param application 应用对象 * @param userInfo <#userInfo description#> * @param completionHandler <#completionHandler description#> */ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ NSLog(@"%@",userInfo); // 系统会根据UIBackgroundFetchResult来判断后台处理的有效性,如果后台处理效率较低,会延迟发送后台推送通知 completionHandler(UIBackgroundFetchResultNewData); }
静默通知
在后台执行远程通知的条件前提下,如果通知内容不包括任何声音&提醒&角标设置,则可以在完全不打扰用户的情况下进行后台内容更新.后台推送的特点
1.自动执行必须是应用已经开启的前提下(无论前后台)
2.在应用程序挂起之前有30秒左右可以执行工作。后台推送不是用于CPU频繁工作或者长时间运行任务,而是用来处理长时间运行的网络请求队列(NSURLSession,系统的全局任务),例如下载一部很大的电影,或者执行快速的内容更新(网络拉取数据并更新后,使用presentLocalNote发送本地通知,进入App时已经更新完数据)。
3.静默的推送通知有速度限制苹果推送服务根据后台推送任务的能耗(用电量,接收情况)来控制后台推送的推送频率和延迟时间。
不同于iOS8本地通知的回调仅用于更新快照,iOS7接收方法中的回调还是系统对后台通知任务的评估依据.
作者:ShenYj
链接:http://www.jianshu.com/p/142fb2d8f0a6
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最后
以上就是忐忑刺猬为你收集整理的静默推送的全部内容,希望文章能够帮你解决静默推送所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复