Как получать уведомления с устройств Bluetooth LE в приложении iOS

Я работаю над приложением iOS Bluetooth LE. Функциональность, которой я могу следовать правильно и успешно, выглядит следующим образом:

  1. Обнаружение периферийных устройств.
  2. Подключение к периферии.
  3. Получение услуг и характеристик.
  4. Возможность чтения данных из характеристик при нажатии на кнопку чтения.
  5. Возможность записи данных.

Здесь я столкнулся с проблемой, мне нужно читать входящие данные только тогда, когда устройство BLE передает их в приложение. Я явно читаю характеристики при нажатии кнопки. Мое устройство BLE постоянно передает некоторые данные через определенные промежутки времени, но я не могу их получить.

Я также установил setNotify для характеристик, а не для успеха.

[peripheral setNotifyValue:YES forCharacteristic:characteristic];

Как мое приложение может быть уведомлено о событии устройства BLE (отправленном им в приложение)? Пожалуйста, помогите мне здесь или предложите мне что-нибудь.

Заранее спасибо.


person Lalit Paliwal    schedule 08.08.2012    source источник
comment
Может ли кто-нибудь помочь мне в этом?   -  person Lalit Paliwal    schedule 09.08.2012
comment
Как узнать, что чип отправляет данные уведомления?   -  person Arturs Vancans    schedule 29.08.2012


Ответы (2)


То, что вы делаете, должно работать. Все данные, поступающие с периферии, будут поступать в метод обратного вызова didUpdateValueForCharacteristic. Ищите там.

Таким образом, независимо от того, вызываете ли вы метод readCharacteristic явно или просто настраиваете свое периферийное устройство, чтобы оно уведомляло вас, когда у него есть доступные данные (например, будильник или сердцебиение), вы все равно будете получать данные в одном и том же месте.

Примечание. Когда вы отправляете сообщение setNotifyValue, вы должны получить обратный вызов метода didUpdateNotificationStateForCharacteristic без ошибок. Если нет, я предлагаю вам посмотреть прошивку вашего периферийного устройства и убедиться, что эта характеристика не предназначена только для чтения/записи.

person Anders Grunnet-Jepsen    schedule 25.10.2012
comment
Привет. Можем ли мы узнать разрешения характеристики, например, включено ли уведомление или нет? - person Gani414; 08.10.2014

На периферийной стороне необходимо установить свойства характеристики для включения уведомлений. Вы делаете это с помощью свойства CBCharacteristicPropertyNotify. Например, вот как можно создать характеристику:

CBMutableCharacteristic *alertLevelCharacteristic = 
[[CBMutableCharacteristic alloc] initWithType:alertLevelCharacteristicUUID
                                   properties:CBCharacteristicPropertyRead | CBCharacteristicPropertyNotify
                                        value: nil permissions:CBAttributePermissionsReadable];
person JeffB6688    schedule 24.01.2015