2015-10-05 2 views
0

У меня есть сервис с несколькими характеристиками, которые рекламируются с помощью Bluetooth LE. Я не хочу начинать отправку данных в центральный, пока он не подписал все четыре характеристики, но я не могу найти способ узнать, какие характеристики были подписаны. Это явно заставляет меня вручную отслеживать, какие характеристики были подписаны до сих пор, но, если возможно, я бы хотел этого избежать. Есть ли способ перечислить характеристики, подписанные данным центральным?Зная, какие характеристики данный центральный подписались на CoreBluetooth

+1

Я думаю, что центральный (разумно) ожидал, что он получит данные от каждой характеристики, как только он ее подпишет. Я не уверен, что поведение, которое вы пытаетесь реализовать, соответствует спецификации Bluetooth Low Energy. –

+0

Я думаю, это правда. Тем не менее мне нужно это поведение. Наверное, я буду следить за подписанными характеристиками вручную. –

ответ

0

В CBMutableCharacteristic есть свойство subscribedCentrals. Вы можете использовать его для своих целей - каждый раз, когда центральная подписка подписывается на характеристику, вы можете проверить, уже ли она подчинена другим характеристикам (возможно, вы где-то храните список из CBMutableCharacteristic экземпляров, чтобы вы могли перебирать их).

Как я уже упоминал в своем комментарии, это может быть не очень хорошая идея, если вы хотите быть хорошим гражданином мира Bluetooth Low Energy. Разработчик центрального подключения к периферийной периферии может быть сбит с толку, когда он или она не получает уведомлений об обновлениях с характеристики, на которую он или она подписались.

Как только вы полностью контролируете центральный (например, вы разрабатываете как периферийные, так и центральные, которые используются только в вашем приложении), это не проблема. В противном случае я бы предложил пересмотреть свой подход, возможно, есть еще одно решение, которое будет работать для вас и других разработчиков, которые хотели бы использовать вашу службу BLE.

+0

Я даже не знаю, как я это пропустил! Я понимаю, что этот подход не соответствует спецификации или цели BLE, но в этом конкретном случае это имеет смысл, и это то, что мне нужно. Спасибо за ваши замечания! –

Смежные вопросы