Как получить список устройств BLE через IOBluetooth framework (macOS) - PullRequest
0 голосов
/ 08 июня 2018

У меня проблема со списком всех устройств через 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, чтобы проверить это.

1 Ответ

0 голосов
/ 11 июня 2018

Хорошо, наконец-то это работает.Просто нужно установить для свойства searchType значение IOBluetoothDeviceSearchLE.rawValue, и оно исключает из поиска все ненужные устройства - именно то, что я искал.Теперь мой поисковый запрос точно такой же, как по умолчанию Bluetooth Explorer.

ioBlutoothmanager.searchType = kIOBluetoothDeviceSearchLE.rawValue

Может быть, это поможет кому-нибудь когда-нибудь

...