我在通过IOBluetooth框架列出所有设备时遇到问题。有没有办法不仅可以获得经典设备,还可以获得BLE设备?
我的代码是
let ioBluetoothManager = IOBluetoothDeviceInquiry(delegate: self)
var ioDevices = [IOBluetoothDevice]()
...
ioBluetoothManager?.start()
...
func deviceInquiryStarted(_ sender: IOBluetoothDeviceInquiry!) {
print("started")
}
///
//IOBluetoothDeviceInquiryDelegate
///
func deviceInquiryDeviceFound(_ sender: IOBluetoothDeviceInquiry!, device: IOBluetoothDevice!) {
print("found device")
ioDevices.append(device)
scrubber.reloadData()
tableView.reloadData()
}
func deviceInquiryComplete(_ sender: IOBluetoothDeviceInquiry!, error: IOReturn, aborted: Bool) {
print("completed")
}
我知道我可以用CoreBluetooth做到这一点,但我还需要过滤设备以符合某个标准。
从this回答我知道我可以做到这一点,但答案缺乏细节。现在我只是获得经典蓝牙设备列表。
有人可以帮忙吗?
UPD:
现在我找到了.searchType
方法kIOBluetoothDeviceSearchClassic
和kIOBluetoothDeviceSearchLE
常量。在viewDidLoad中,我执行了以下操作:
ioBlutoothmanager.searchType = IOBluetoothDeviceSearchLE.rawValue
但它仍然只能找到经典设备。
UPD:
这段时间它的工作正常我没想到。它过滤了我不需要的所有设备,而且我没有AirPods来检查它。
答案 0 :(得分:5)
好的,所以最后它正在发挥作用。只需要将searchType属性设置为IOBluetoothDeviceSearchLE.rawValue,它就会从搜索中排除所有不必要的设备 - 正是我正在寻找的。现在我的搜索查询与默认的蓝牙资源管理器完全一样。
ioBlutoothmanager.searchType = kIOBluetoothDeviceSearchLE.rawValue
也许有一天它会帮助某人