1

2 番目の BLE セントラル アプリと正常に接続する Bluetooth Low Energy ペリフェラル アプリを開発しました。ただし、周辺機器が提供するサービスの特徴の 1 つについて、セントラル アプリに通知をサブスクライブさせることができません。中央アプリには、次のものがあります。

- (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];

残念ながら、これは失敗し、デリゲート メソッドperipheral:didUpdateNotificationStateForCharacteristicでエラーが受信されます(エラー タイプは「不明」です)。上記のコード (aChar) で特徴的なオブジェクトを出力すると、次のようになります。

<CBCharacteristic: 0x1464f560, UUID = 2A06, properties = 0x2, value = (null), notifying = NO>

通知 = NO であることに注意してください。特性が通知できるようにペリフェラルを設定するにはどうすればよいですか?

4

1 に答える 1

3

わかりました、私はそれを理解しました。ペリフェラル側では、通知を有効にするために特性のプロパティを設定する必要があります。これは、CBCharacteristicPropertyNotify プロパティで行います。たとえば、特性を作成する方法は次のとおりです。

CBMutableCharacteristic *alertLevelCharacteristic = 
[[CBMutableCharacteristic alloc] initWithType:alertLevelCharacteristicUUID
                                   properties:CBCharacteristicPropertyRead | CBCharacteristicPropertyNotify
                                        value: nil permissions:CBAttributePermissionsReadable];
于 2015-01-24T21:01:58.823 に答える