Ios5 CoreBluetooth写入值:forDescriptor:问题
我的CoreBluetooth应用程序需要启用客户端特征配置描述符中的“指示位”。以下是我所做的:Ios5 CoreBluetooth写入值:forDescriptor:问题,ios5,descriptor,core-bluetooth,Ios5,Descriptor,Core Bluetooth,我的CoreBluetooth应用程序需要启用客户端特征配置描述符中的“指示位”。以下是我所做的: 开始扫描 开始连接到设备 调用discoverServices 在回调中调用发现特性 -(无效)外围设备:(CBPeripheral*)外围设备DID发现服务:(N错误*)错误 调用discoverDescriptorsForCharacteristic内部回调 -(void)外围设备:(CBPeripheral*)外围设备DID发现特性服务:(CBService*)服务错误:(NSError*)
discoverServices
发现特性
-(无效)外围设备:(CBPeripheral*)外围设备DID发现服务:(N错误*)错误discoverDescriptorsForCharacteristic
内部回调
-(void)外围设备:(CBPeripheral*)外围设备DID发现特性服务:(CBService*)服务错误:(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
中崩溃:。控制台中的错误消息为:
无法使用写入客户端特征配置描述符
这个方法
有什么想法吗?谢谢问题在于,您不能像以前那样使用writeValue:forDescriptor:方法来写入客户端配置描述符(UUID=2902)的值
相反,您应该使用CBPeripheral类的setNotifyValue:forCharacteristic:方法来配置客户端指示或服务器上特征值的通知。这是一个很老的问题,但由于没有回答,似乎该方法
setNotifyValue(u:for:)
会为您处理这个问题,它取决于以下charcateristics属性:
- 仅通知:将启用通知
- 仅指示:将启用指示
- 指示和通知:仅启用通知
我想知道是否有使用writeValue:forDescriptor的示例代码。实际上,我的解决方案不是使用writeValue:forDescriptor。您能解释一下如何在不使用writeValue:forDescriptor的情况下启用指示吗?我被困在同一个地方…你有什么解决办法吗?