Я разработал периферийное приложение Bluetooth с низким энергопотреблением, которое успешно соединяется со вторым центральным приложением BLE. Однако я не могу заставить центральное приложение подписаться на уведомления об одной из характеристик услуги, предлагаемой периферийным устройством. В центральном приложении у меня есть следующее:
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
if ([service.UUID isEqual:[CBUUID UUIDWithString:IMMEDIATE_ALERT_SERVICE_UUID]]) {
for (CBCharacteristic *aChar in service.characteristics) {
if ([aChar.UUID isEqual:[CBUUID UUIDWithString:ALERT_LEVEL_CHARACTERISTIC_UUID]]) {
[peripheral setNotifyValue:YES forCharacteristic:aChar];
К сожалению, это не удается, и в периферийном методе делегата возникает ошибка:didUpdateNotificationStateForCharacteristic (тип ошибки «неизвестен»). Если я напечатаю объект характеристики в приведенном выше коде (aChar), я получу следующее:
<CBCharacteristic: 0x1464f560, UUID = 2A06, properties = 0x2, value = (null), notifying = NO>
Обратите внимание, что уведомление = НЕТ. Как настроить периферийное устройство, чтобы характеристика уведомляла?