首先,先來大概了解下蘋果的后臺運行的機制:一般說來,所有程式進入背景后都還有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使用藍牙?
這里的圖是iOS10的樣式