回复peripheralManager:didReceiveWriteRequests:
的正确方法是什么?
标题文档说明:
“对于此方法的每次调用,respondToRequestWithResult
应该只调用一次。”
在didReceiveWriteRequests
中,使用NSArray
传递多个写入请求。
如果所有写入请求都成功处理,我们是否只是从列表中任意选择一个请求并将其用作respondToRequestWithResult
的参数,因为respondToRequestWithResult
方法只需要一个CBATTRequest
参数而不是CBATTRequest
附带的didReceiveWriteRequests
列表?
我期望一种对称的响应方法,将请求列表作为参数。
答案 0 :(得分:5)
来自Apple文档:Here
处理来自连接中心的写入请求也很简单。当连接的中心发送写入一个或多个特征值的请求时,外围设备管理器会调用其委托对象的peripheralManager:didReceiveWriteRequests:方法。这次,委托方法以包含一个或多个CBATTRequest对象的数组的形式向您发送请求,每个对象代表一个写请求。在确保可以满足写入请求之后,您可以编写特征值,如下所示:
myCharacteristic.value = request.value;
虽然上面的示例没有说明这一点,但在写入特征值时,请务必考虑请求的偏移属性。
正如您响应读取请求一样,每次调用peripheralManager:didReceiveWriteRequests:delegate方法时,只需调用一次respondToRequest:withResult:方法。也就是说,respondToRequest:withResult:方法的第一个参数需要一个CBATTRequest对象,即使你可能已经从peripheralManager收到了一个包含多个它们的数组:didReceiveWriteRequests:delegate方法。您应该传入数组的第一个请求,如下所示:
[myPeripheralManager respondToRequest:[requests objectAtIndex:0]
withResult:CBATTErrorSuccess];