Вот мои настройки:
- iPad считает, что он подключен к BLE-устройству
- Устройство BLE (проприетарное) потеряло связь
- Устройство BLE имеет режим готовности к соединению, который в настоящий момент имеет значение false.
Таким образом, наше приложение для iOS, полагая, что все хорошо, пытается написать характеристику в связанном сервисе устройства BLE. Я предполагаю, что, поскольку iOS считает, что связь все еще не повреждена, она отправляет характеристическую запись на устройство BLE, которое отклоняет его, потому что считает, что они не связаны. Я также предполагаю, что iOS затем отправляет запрос «давайте связать», который отклоняется устройством BLE, поскольку его режим «готового соединения» имеет значение false.
В предыдущих версиях iOS (сейчас мы работаем с 12.1) мы получали различные ошибки в этой ситуации, наиболее полезной из которых является CBATTErrorDomain Code = 15 «Шифрование недостаточно». но теперь мы просто ничего не получаем обратно. У меня есть отладочный вывод для всех различных объектов делегатов, и абсолютно ничего не запускается. Через несколько секунд мой код истекает.
Есть ли в iOS делегат или другое уведомление, которое я должен наблюдать, чтобы узнать, что запрос на связывание был предпринят и отклонен? Или, если iOS действительно настаивает на том, чтобы мое приложение НИЧЕГО не знало о связывании (что является общим случаем с подсистемой BLE), это ошибка iOS, которая не говорит мне, что моя попытка записи не удалась?