在MacOS上扫描BluetoothLE制造商广告时,发现回调的频率远低于iOS。对于10 Hz的广播发射器,iOS每秒可获得近10次发现回调。在MacOS上,通常每秒看到1-3个回调,但有时回调之间可能会有很多秒 - 有几次我在检测之间测量超过90秒!下面的图表显示了大约两小时的测试运行中发现之间的秒数。
为什么MacOS上的发现时间与iOS相比无法预测?有没有办法让回调更可靠?
我在MacBook Pro(Retina,15英寸,2014年中)的macOS Sierra 10.12.6上录制了这些数据,但我听到同事们抱怨新MacBook上存在类似的不可靠性。
centralManager = CBCentralManager(delegate: self,
queue: DispatchQueue.global(qos: .default))
centralManager.scanForPeripherals(withServices: nil,
options: [CBCentralManagerScanOptionAllowDuplicatesKey: true])
...
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
let secsSinceDetection = Date().timeIntervalSince(self.lastDetectionTime)
lastDetectionTime = Date()
NSLog("LDT: \(secsSinceDetection))")
}