如何使用Core bluetooth Framework在iOS 13中发现Bluetooth Classic设备

时间:2019-07-16 05:54:37

标签: swift bluetooth core-bluetooth ios13

我正在尝试在运行于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)设备列表。

1 个答案:

答案 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

的示例