首先,先来大概了解下苹果的后台运行的机制:一般说来,所有程式进入背景后都还有5 秒的执行缓冲时间,有些程序可以要求延长到10 分钟(这些当然是由开发人员在设计与提交程序时决定和声明);所以,当你按下Home 键后,前台的程序就会退到后台,如果它有额外的背景执行作业,超过10 分钟还是会被iOS 中止。
苹果公司把app划分为了三种:
保存现场。
上述讲到的,也是我们绝大部分普通的app。iOS支持的“多任务”。
即:按下Home键转入多任务状态,保留在内存中,但只能系统允许的动作:比如GPS,比如VoIP,比如Streaming Music等等(导航定位、网络电话、音乐播放器)。真正的桌面级别的多任务。
即:只有Safari/Mail才是真正的多任务,苹果嫡系大都都不是。这个级别的app在后台是没有任何限制动作。(对于无限制动作的程序,一是会在用户无察觉的情况下耗光电力,二是会有安全上面的问题)。
废话讲完了,来重点了~
我们蓝牙开发为了能使app在后台运行时依旧保持与外设的连接,就需要在工程目录下的 info.plist 文件中,
iOS9及其以前的做法:新建一行 Required background modes , 加入下面两项。
App shares data using CoreBluetooth 和 App communicates using CoreBluetooth
iOS10的做法:直接添加 Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?