方法peripheral:didWriteValueForCharacteristic:error:未被调用

时间:2016-12-22 18:28:12

标签: ios objective-c iphone bluetooth-lowenergy mtu

我使用以下调用通过BLE发送数据

[peripheral writeValue:dataPiece forCharacteristic:characteristic
    type:CBCharacteristicWriteWithResponse];

当dataPiece大小为180 bytes或更少时,一切正常:接受设备接收所有数据,在呼叫设备上调用相应的回调(peripheral: didWriteValueForCharacteristic: error:)。当大小变大(>180)时,接收设备仍然获取所有数据(在两个块中:180 bytes和其余的)。但是在后一种情况下,不会调用发送设备上的回调。

同样[peripheral maximumWriteValueLengthForType:CBCharacteristicWriteWithResponse]会返回超过512的{​​{1}},因此我希望180能正常工作。

我错过了什么(显然是的,但是什么)?

1 个答案:

答案 0 :(得分:0)

对于外围设备,它应在中央调用readValueForDescriptor:方法时响应描述符。
如果没有响应,则中央无法向其中写入数据。

请参阅:

  • (void)readValueForDescriptor:(CBDescriptor *)descriptor;
  • (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForDescriptor:(CBDescriptor *)descriptor error:(nullable NSError *)error;