公司需要做一个直播秀场类的app,其中只有界面是oc开发的,其他的网络以及视音频基本是c++开发的。项目要求app进入后台后还能持续运行,不停的接收视频音频数据,并且播放相关的音频,这就用到ios的后台运行。
经过了解app进入后台后一般很短时间就会进入“休眠”状态,一般最多10分钟的时间可以提供给app处理一些事情,一旦超过这个时间系统会自动将app杀掉。但是ios提供了5类app可以长时间运行,他们分别是:
1. Audio
2. Location/GPS
3. VoIP
4. Newsstand
5. Exernal Accessory
使用以上这五种特性的app有个风险就是一旦被App Store认定滥用系统API就可能会被拒绝。
为了适应项目的需要,就决定在app中使用Audio的特性,使用后一旦app进入后台,系统的多媒体框架就会阻止该app进入休眠的状态,这样app内的c++线程依然能连接到服务器下载数据,解码播放的线程能不停的解码和播放,就可以的顺利达到项目要求。使用的方法为:
在工程的 info.plist中添加 Required background modes该key可以包含多个选项,在item后面选定 App plays audio or streams audio/video using AirPlay 。然后编译运行app就可以达到进入后台而不休眠的效果。