2017-07-25 55 views
0

有沒有什麼辦法可以強制iOS應用程序(編碼爲BLE中央)繼續在後臺執行BLE掃描,就好像它在前臺運行一樣?我們正在使用RSSI來確定接近程度,並且應用程序必須在後臺運行並處理RSSI級別。注意:正如您可能會或可能不知道的那樣,RSSI非常嘈雜,需要使用盡可能多的樣本進行過濾以獲得精確的鄰近度。我們嘗試過連接,然後立即斷開應用程序與BLE外設的連接,但使用此方法可防止外設在連接到iOS應用程序時進行廣告宣傳。實際上,這限制了其他附近iOS設備所需的BLE外設的廣告數量,因此理想情況下,我們不希望使用此方法。對於那些希望在這個問題上權衡的人,我們可以通過BLE外設修改任何或所有廣告載荷部分。BLE iOS背景廣告

回答

0

您無法強制iOS應用程序執行違反Apple規則的操作。如果你想繼續掃描BLE設備,你的應用需要處於前臺狀態。

或者,您可以在後臺監控BLE設備。只要BLE設備靠近設備,您就可以在有限的時間內掃描設備 - 也可以在後臺進行掃描。

let beaconRegion = CLBeaconRegion(proximityUUID: "some uuid", major: 1, minor: 1, identifier: "some identifier") 
locationManager.startMonitoring(for: beaconRegion) 

但是,我不知道這是否符合您的使用案例。

0

您可以使用服務UUID在後臺繼續進行BLE掃描。您必須掃描特定的服務UUID。使用下面的方法在後臺掃描。

開放FUNC scanForPeripherals(withServices serviceUUIDs:[CBUUID]?選項:[字符串:任何] =無)

你需要設置背景模式在你的.plist文件的另一件事。將'需要的背景模式'設置爲'使用CoreBluetooth進行應用程序通信'。