Сценарий автоматического подключения BLE и ANCS
Я разработал носимое устройство, которое использует технологию BLE для подключения других устройств BLE. Я успешно внедрил ANCS также со стороны носимых устройств.
Постановка проблемы здесь такова:
Я не использую программу Apple MFI. Когда я сканирую устройство в первый раз, оно обнаруживается на основе идентификаторов служб. После успешного подключения ANCS устанавливает и запрашивает запрос на сопряжение, который отображается в приложении.
Если устройство как-то отключается и пользователь включает его вручную. Устройство автоматически подключается с внешнего экрана настроек Bluetooth. Это приводит к проблеме, в которой я не могу сканировать устройство из самого приложения, так как оно подключается извне, и, следовательно, рекламные пакеты перестают распространяться. Поскольку я не могу отсканировать часы, я не могу их подключить.
Я должен отключить его вручную, а затем устройство входит в список сканирования.
Могу ли я узнать, что устройство подключено извне из моего приложения?
Если да, то, пожалуйста, дайте мне знать, а если нет, то, пожалуйста, предложите какое-нибудь альтернативное решение для всего этого сценария, так как мне придется снова и снова отключать его, чтобы отсканировать его в приложении.
Я застрял на этой проблеме за последние 10 дней.
Пожалуйста, предоставьте решение. Любая помощь приветствуется.
Спасибо
1 ответ
Когда вы пытаетесь сканировать периферийные устройства в вашем приложении, вы должны использовать retrieveConnectedPeripheralsWithServices:
сначала до сканирования.
Вот пример:
NSArray *peripherals = [central retrieveConnectedPeripheralsWithServices:@[serviceUUId]];
if (peripherals.count > 0) {
CBPeripheral *peripheral = [peripherals firstObject];
peripheral.delegate = self;
[central connectPeripheral:peripheral options:nil];
} else {
[central scanForPeripheralsWithServices:@[serviceUUId] options:nil];
}
Лучшие практики для подключения периферийных устройств описаны в документе Apple BLE: