我正在尝试在运行于iOS-13的应用中使用Core Bluetooth框架发现Bluetooth LE和Classic(BR / EDR)设备。但是我只能找到BLE设备。
如何扫描Bluetooth Classic设备?
初始化CBCentralManager并打开CentralManager的电源后,我通过在服务和选项中输入nil来扫描外围设备。
下面提到的代码:-
private var cbManager: CBCentralManager!
override func viewDidLoad() {
super.viewDidLoad()
cbManager = CBCentralManager(delegate: self, queue: nil)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch central.state {
case .poweredOn:
cbManager.scanForPeripherals(withServices: nil, options:nil)
default:
os_log("Cleaning up cbManager")
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if let name = peripheral.name {
print(name)
}
}
因此,我只得到BLE设备。预期结果应该是:BLE和Classic(BR / EDR)设备列表。
答案 0 :(得分:-1)
在您的.powerOn
内添加此项,以便能够与特定的服务UUID匹配。
let matchingOptions = [CBConnectionEventMatchingOption.serviceUUIDs: [uuid-to-classic-bt-device]]
cbManager.registerForConnectionEvents(options: matchingOptions)
然后在委托方法centralManager:connectionEventDidOccur:forPeripheral:
中,您可以检查事件.peerDisconnected
和.peerConnected
以对发现的外围设备进行某些操作。
Apple提供了此Using Core Bluetooth Classic
的示例