iOS 实现后台运行的解决方法
对于ios7,苹果支持几种后台运行模式,backgroundTask,voip,后台播放音乐等,具体看官方文档就好。
我这边需要在后台跑一个长时间运行的计时器,所以就不能让app进入suspend状态。
很早以前听说可以通过后台播放音乐来实现,借鉴了一下,测试好几天,找出来了一个还比较靠谱的方案:
1 首先要在appleDelegate方法里面的applicationDidEnterBackgroud方法里添加申请一个后台任务的方法
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil]
2
然后写一个计时器实时检测 backgroundTimeRemaining
– (void)tik{
if ([[UIApplication sharedApplication] backgroundTimeRemaining] < 61.0) {
[[CKAudioTool sharedInstance] playFuck];
[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
}
}
[[CKAudioTool sharedInstance] playFuck];这段代码是去播放了一个无声的音乐,
很关键的一点是
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&error]
案例代码