2015-10-12 48 views
3

我知道你總是可以通過CoreLocation掃描iBeacons,但是否可以始終通過CoreBluetooth掃描BLE(非iPhone外設)廣告數據?一直以來,我的意思是,如果我一次不打開應用程序數天或關閉手機並重新開機。是否有可能讓CoreBluetooth始終打開並掃描?

從我的研究來看,這聽起來像是你可以通過CoreBluetooth在背景中掃描,但如果iPhone發生了太多事情或者iPhone已關閉並打開,它會關閉,但這可以完成使用CoreLocation(或通過Apple MFi程序)。

+0

您可以在後臺掃描,但您需要指定您感興趣的服務UUID。爲了支持長時間掃描(您的應用可能已從後臺終止),您需要實現藍牙國家恢復。它在「核心藍牙編程指南」中有介紹 – Paulw11

回答

2

嘗試了這一點

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil]; 
[manager scanForPeripheralsWithServices:nil options:options]; 

這使得didDiscoverPeripheral回調約每100ms。這包括它看到的每個設備的RSSI。

你是對的,你也可以在後臺掃描。從Apple Documentation:已指定藍牙中央背景模式

應用程序都允許 掃描,同時在後臺運行。也就是說,他們必須 通過在 serviceUUs參數中指定它們來顯式掃描一個或多個服務。

相關問題