【发布时间】:2015-09-24 15:09:01
【问题描述】:
我有一个 iOS BLE 服务可以做广告并且可以连接,但现在我想为外围设备添加一个特性。我想我只是在 value 属性中添加一个新的 NSData 对象来创建特性,但是每当我在外围管理器上调用 addService 时,我都会收到此错误:
2015-09-24 09:02:59.456 peripheral[459:27589] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Characteristics with cached values must be read-only'
我添加特征的方法如下:
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral{
if (peripheral.state == CBPeripheralManagerStatePoweredOn) {
_shareService = [[CBMutableService alloc] initWithType:_serviceUUID primary:YES];
_notifyUUID = [CBUUID UUIDWithString:@"F098FDEF-B82C-43F1-8BFB-18757743BA10"];
_notificationCharacteristic = [[CBMutableCharacteristic alloc] initWithType:_notifyUUID
properties:CBCharacteristicPropertyNotify
value:[@"Some Data" dataUsingEncoding:NSUTF16StringEncoding]
permissions:CBAttributePermissionsReadable];
[_shareService setCharacteristics:@[_notificationCharacteristic]];
[_pMgr addService:_shareService];
[self startAdvertising];
}
}
虽然当我将 value 项更改为 nil 时,它再次做广告。我确信我缺少一些简单的东西,但我对 iOS 还是很陌生,所以任何帮助都会很棒。谢谢!
【问题讨论】:
标签: ios objective-c bluetooth-lowenergy