7

CoreBluetooth アプリケーションでは、Client Characteristic Configuration 記述子で「表示ビット」を有効にする必要があります。これが私がしたことです:

  1. スキャンを開始
  2. デバイスへの接続を開始します
  3. 電話discoverServices
  4. コールdiscoverCharacteristicsバック内で呼び出す

    -(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)エラー

  5. コールdiscoverDescriptorsForCharacteristicバック内で呼び出す

    -(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)サービス エラー:(NSError *)エラー

  6. 内部コールバック

    -(void)peripheral:(CBPeripheral *)peripheral didDiscoverDescriptorsForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)エラー

私は呼びました:

        if ( [[descriptor.UUID representativeString] isEqualToString:@"2902" ] )
        {
            const unsigned char raw_data[] = {0x02};
            NSData *myData = [NSData dataWithBytes: raw_data length: 2];
            [self.cBCP writeValue:myData forDescriptor:descriptor];
        }

しかし、私のアプリは : でクラッシュしwriteValeます。コンソールのエラー メッセージは次のとおりです。

このメソッドを使用して Client Characteristic Configuration 記述子を書き込めません!

何か案が?ありがとう

4

2 に答える 2

0

問題は、writeValue:forDescriptor: メソッドを使用してクライアント構成記述子 (UUID = 2902) の値を書き込むことができないことです。

代わりに、CBPeripheral クラスの setNotifyValue:forCharacteristic: メソッドを使用して、サーバー上の特性値のクライアント表示または通知を構成する必要があります。

于 2013-08-31T04:58:17.803 に答える