Основная проблема, которую я пытаюсь решить, заключается в следующем. У меня есть два устройства iOS, один из которых сконфигурирован как центральный, а другой - как периферийный. Я хотел бы, чтобы периферийное устройство узнало, если центральный элемент уходит или становится неактивным по какой-либо причине (например, устройство, на котором запущено центральное устройство, отключено).CoreBluetooth: Как может периферийный менеджер узнать, что центральный получил указание?
В нормальных условиях я настроен таким образом, что, когда центральная часть движется близко к периферии, центральная часть может использовать зоны радиомаяка и дальность действия, чтобы информировать периферийное устройство через характеристическую запись, когда она находится в непосредственной близости (CLProximityImmediate), а затем снова, когда он все еще находится в зоне действия, но далеко (CLProximityFar). Это хорошо работает.
Однако, чтобы поймать условие угла, когда центральное устройство переходит из CLProximityImmediate в какое-то неизвестное состояние, я планировал использовать периодические указания от периферии, на которую может ответить центральный. Если нет никакого ответа на указание, тогда периферийное устройство может предположить, что центральное устройство больше не находится в непосредственной близости. Однако я не могу найти метод обратного вызова или делегирования, который информирует периферийного менеджера о том, что индикация не удалась.
Метод updateValue: forCharacteristic: onSubscribedCentrals: возвращает NO, когда основная очередь передачи заполнена - и НЕ, потому что центральный не ответил, как я ее понял.
Я пропустил что-то очевидное здесь? Есть ли способ для периферийного менеджера сказать, что центральный не получил указание? Или в этом случае отсутствует обратный вызов в CoreBluetooth?
Благодарим за помощь!
Что делать, если вместо этого вы используете уведомление и таймер? Хороший вопрос. – allprog