BLE デバイスからデータを読み込もうとしていますが、パーミッション エラーが発生し続けます。デモ プロジェクトは次の場所にあります: https://github.com/sergiomtzlosa/CoreBluetooth-Demo (覚えておいてください - 私のコードはこれとは少し異なります)。
一般的に接続と読み取り値に問題はありませんが、いくつかの特性(これは不可欠です)が許可エラーを引き起こします。
コンソール ログ:更新エラー!!! 特性: "不明 (< fff4 >)" エラー: "読み取りは許可されていません"。
そのため、その特性からデータを購読または読み取ると、毎回 NULL が送信されます (考えられる理由: 読み取り許可がない)。
コンソール ログ:特性: "不明 (< fff4 >)" -> 値: (null)
コード セグメントは次のとおりです。
//Action on discovering services
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
if (error)
{
NSLog(@"Discovered services for %@ with error: %@", peripheral.name, [error localizedDescription]);
return;
}
for (CBService *service in peripheral.services) {
NSLog(@"Discovereddddddddddd service %@", service.UUID);
[testPeripheral discoverCharacteristics:nil forService:service];
}
NSLog(@"didDiscoverServicesEnd");
}
//Action on discovered characteristics
- (void)peripheral:(CBPeripheral *)peripheral
didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error {
NSLog(@"didDiscoverCharacteristicsForService!");
for (CBCharacteristic *characteristic in service.characteristics) {
NSLog(@"Discovered characteristic %@", characteristic.UUID);
NSLog(@"---------------------------------------------------");
NSLog(@"Reading value for characteristic %@", characteristic.UUID);
[peripheral readValueForCharacteristic:characteristic];
NSLog(@"+++++++++++++++++++++++++++++++++++++++++++++++++++");
[peripheral setNotifyValue:YES forCharacteristic:characteristic];
}
}
//Action on reading value
- (void)peripheral:(CBPeripheral *)peripheral
didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error{
if (error){
NSLog(@"Update error!!! Characteristic: %@ with error: %@", characteristic.UUID, [error localizedDescription]);
return;
}else{
NSData *data = characteristic.value;
NSString *str = [NSString stringWithUTF8String:[data bytes]];
NSLog(@"Characteristic: %@ -> with value: %@", characteristic.UUID, str);
}
}
どうしたの?とにかくこの問題を克服する方法はありますか?