iOS版。 BLE。 CBCharacteristicWriteWithoutResponse – 如何使其工作?

这是我的第一个问题,不要为此付出太多的代价。 我想得到一些build议如何从一个iOS设备发送到CBCharacteristicWriteWithoutResponse几个字节。

我尝试使用writeValue:forCharacteristic:type:从一个iOS设备(中心angular色)发送数据,并在另一个iOS设备(外围设备angular色)上使用peripheralManager:didReceiveWriteRequests:接收数据。

我没有types:CBCharacteristicWriteWitResponse的问题,但如果我把它replacetypes:CBCharacteristicWriteWithoutResponse外设停止接收它。 怎么了? 我错过了什么或者WriteWithoutResponse不被CBCentralManagerDelegate支持?

这里有一些代码:

@interface BleCentralDemo : NSObject <CBCentralManagerDelegate> {} @end @implementation BleCentralDemo -(void) writeValue:(int)sUUID characteristicUUID:(int)cUUID p:(CBPeripheral *)p data:(NSData *)data { [p writeValue:data forCharacteristic:cUUID type:CBCharacteristicWriteWithResponse]; // sent, received [p writeValue:data forCharacteristic:cUUID type:CBCharacteristicWriteWithOutResponse]; // sent, not received } @end @interface BlePeripheralDemo : NSObject <CBPeripheralManagerDelegate> {} @end @implementation BlePeripheralDemo -(void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests { for (CBATTRequest *request in requests){ NSLog(@"request.value:%@", request.value); [peripheral respondToRequest:request withResult:CBATTErrorSuccess]; } } @end 

我今天遇到了同样的问题。

你应该使用CBCharacteristicPropertyWriteWithoutResponse属性来设置你的特性(在你的代码中有cUUID)

我的特点是来自外围设备。 像这样创build

 [[CBMutableCharacteristic alloc] initWithType:writeableCharacteristicUUID properties:CBCharacteristicPropertyWrite | CBCharacteristicPropertyNotify | CBCharacteristicPropertyWriteWithoutResponse value :nil permissions:CBAttributePermissionsWriteable]; 

希望能帮助到你