У меня проблема со списком всех устройств через IOBluetooth framework.Есть ли способ получить не только классические, но и 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, но мне также нужно фильтровать устройства по определенным критериям.
С этот ответ Я знаю, что могу это сделать, но в этом ответе отсутствуют детали.Пока я просто получаю список классических устройств Bluetooth.
Может кто-нибудь помочь?
UPD:
Теперь я нашел .searchType
метод с kIOBluetoothDeviceSearchClassic
и kIOBluetoothDeviceSearchLE
константы.В viewDidLoad я сделал следующее:
ioBlutoothmanager.searchType = IOBluetoothDeviceSearchLE.rawValue
, но он по-прежнему находит только классические устройства.
UPD:
Все это время он работал так, как надо.не ожидаю.Он отфильтровал все устройства, которые мне не нужны, и у меня не было AirPods, чтобы проверить это.