Какие устройства возвращает CBCentralManager.retrieveConnectedPeripherals ()? - PullRequest
0 голосов
/ 06 июня 2019

Я хочу проверить, к каким Bluetooth-устройствам подключен мой iPhone. Для этого я использую CBCentralManager.retrieveConnectedPeripherals() вот так:

let connectedPerphs = centralManager.retrieveConnectedPeripherals(withServices: []);

Моя проблема в том, что даже если мой iPhone подключен к BluetoothDongle (в настройках явно указано «подключен»), список, возвращаемый retriveConnectedPeripherals(), всегда пуст. Неправильно ли я использую этот метод или его нельзя использовать для обнаружения Bluetooth-соединения, такого как соединение с моим ключом? Если последний случай, как я могу обнаружить это соединение?

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Во-первых, это работает только с устройствами BLE, поэтому, если ваш ключ использует общий BT, вы не получите его отсюда, но, вероятно, используете метод EAAccessoryManager var connectedAccessories: [EAAccessory], но, насколько я знаю, ваше приложение должно соответствовать в МФО.
Вот почему спрашивает, какой сервис ваши устройства предоставляют в качестве фильтра.

0 голосов
/ 06 июня 2019

Позвольте мне очистить, centralManager.retrieveConnectedPeripherals всегда возвращает пустое или nil значение, если вы не передаете какое-либо значение в serviceUUIDs

retrieveConnectedPeripherals (withServices:)

Возвращает список периферийных устройств (содержащих любую из указанных служб), в данный момент подключенных к системе.

serviceUUID:

Список службUUID (представлены CBUUID объектами).

Обновление:

К сожалению, это долгий способ сделать это.Вы можете создать Array из CBUUID статически, а затем передать его методу.Пожалуйста, обратитесь ниже код.

let aryUUID = ["1800","18811"]
var aryCBUUIDS = [CBUUID]()

for uuid in aryUUID{
    let uuid = CBUUID(string: "1800")
    aryCBUUIDS.append(uuid)
}
let connectedPerphs = centralManager.retrieveConnectedPeripherals(withServices: aryCBUUIDS)

Список доступных услуг

...