ios实现长时间后台运行
2016-01-08 17:28
369 查看
ios实现长时间后台运行
2015-04-24 16:07 165人阅读 评论(0) 收藏 举报![](http://static.blog.csdn.net/images/category_icon.jpg)
分类:
IOS(621)
![](http://static.blog.csdn.net/images/arrow_triangle%20_down.jpg)
前段时间做一个闹钟类型的产品,使用localnotification不太符合要求。
对于ios7,苹果支持几种后台运行模式,backgroundTask,voip,后台播放音乐等,具体看官方文档就好。
我这边需要在后台跑一个长时间运行的计时器,所以就不能让app进入suspend状态。
很早以前听说可以通过后台播放音乐来实现,借鉴了一下,测试好几天,找出来了一个还比较靠谱的方案:
首先在
- (void)applicationDidEnterBackground:(UIApplication *)application{
}
里面申请backgroundTask
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]
实现一个可以运行几分钟的权限。
然后写一个计时器实时检测 backgroundTimeRemaining
- (void)tik{
if ([[UIApplication sharedApplication] backgroundTimeRemaining] < 61.0) {
[[CKAudioTool sharedInstance] playSound];
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
}
}
[[CKAudioTool sharedInstance] playSound];这段代码是去播放了一个无声的音乐,很关键的一点是
[[***AudioSession sharedInstance] setCategory:***AudioSessionCategoryPlayback withOptions:***AudioSessionCategoryOptionMixWithOthers error:&error]
这样后台播放就不会影响到别的程序播放音乐了。
我这个计时器每分钟运行一次tik函数,如果发现后台运行时间小于一分钟了,就再去申请一个backgroundTask。
神奇的地方在于:backgroundTask不能在程序已经进入后台的时候申请,可以用一个播放音乐的假前台状态去申请,所以可以做到不断申请到权限,也就完成了长时间后台执行。
相关文章推荐
- iOS 6
- ios--随笔一
- iOS模拟器键盘输入中文解决方案
- ios4 习题
- iOS 第七期考核题(字符串以及字典的使用 数组内容转换成字符串)
- Learning methods - 2
- iOS开发----Xcode7升级之后插件无法使用与不小心点击Skipbundle的解决办法
- iOS 第六期考核题(字典的使用)
- iOS 第五期考核题(字典与数组嵌套,字典的排序/删除)
- ios 离线实现
- iOS 第四期考核题(字符串/字典/数组的使用)
- iOS - 深复制和浅复制
- RESTKit 使用教程
- iOS开发 一些基础控件知识
- iOS学习路线 一张图搞定
- iOS中的字符串NSString
- iOS 强制传参 NSInvocation
- iOS学习之Socket使用简明教程- AsyncSocket
- iOS 麦克风访问权限
- iOS tabbar 图片尺寸