如何通过IOBluetooth框架获取BLE设备列表(macOS)
How to get a list of BLE devices through IOBluetooth framework (macOS)
我在通过 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 的回答 我知道我可以做到,但该回答缺少详细信息。现在我只是获取经典蓝牙设备的列表。
有人可以帮忙吗?
更新:
现在我找到了带有 kIOBluetoothDeviceSearchClassic
和 kIOBluetoothDeviceSearchLE
常量的 .searchType
方法。在 viewDidLoad 中,我做了以下操作:
ioBlutoothmanager.searchType = IOBluetoothDeviceSearchLE.rawValue
但它仍然只能找到经典设备。
更新:
这段时间一切正常,出乎我的意料。它过滤了所有我不需要的设备,我没有 AirPods 来检查。
好的,所以它终于起作用了。只需将搜索类型 属性 设置为 IOBluetoothDeviceSearchLE.rawValue,它就会从搜索中排除所有不必要的设备——这正是我要找的。现在我的搜索查询与默认的 Bluetooth Explorer 完全一样。
ioBlutoothmanager.searchType = kIOBluetoothDeviceSearchLE.rawValue
也许有一天它会对某人有所帮助
我在通过 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 的回答 我知道我可以做到,但该回答缺少详细信息。现在我只是获取经典蓝牙设备的列表。
有人可以帮忙吗?
更新:
现在我找到了带有 kIOBluetoothDeviceSearchClassic
和 kIOBluetoothDeviceSearchLE
常量的 .searchType
方法。在 viewDidLoad 中,我做了以下操作:
ioBlutoothmanager.searchType = IOBluetoothDeviceSearchLE.rawValue
但它仍然只能找到经典设备。
更新:
这段时间一切正常,出乎我的意料。它过滤了所有我不需要的设备,我没有 AirPods 来检查。
好的,所以它终于起作用了。只需将搜索类型 属性 设置为 IOBluetoothDeviceSearchLE.rawValue,它就会从搜索中排除所有不必要的设备——这正是我要找的。现在我的搜索查询与默认的 Bluetooth Explorer 完全一样。
ioBlutoothmanager.searchType = kIOBluetoothDeviceSearchLE.rawValue
也许有一天它会对某人有所帮助