4

什么是正确的回应方式peripheralManager:didReceiveWriteRequests:

标头文档指出:

“对于此方法的每次调用都respondToRequestWithResult应该只调用一次。”

didReceiveWriteRequests多个写入请求中,使用NSArray.

如果所有写请求都被成功处理,我们是否只是从列表中任意选择一个请求并将其用作参数,respondToRequestWithResult因为该respondToRequestWithResult方法只接受一个CBATTRequest参数而不是CBATTRequests 附带的列表didReceiveWriteRequests

我期望一个以请求列表作为参数的对称响应方法。

4

1 回答 1

5

来自 Apple 文档:这里

处理来自连接中心的写入请求也很简单。当一个连接的中心发送一个写入一个或多个特征值的请求时,外围管理器调用它的委托对象的 peripheralManager:didReceiveWriteRequests: 方法。这一次,委托方法以包含一个或多个 CBATTRequest 对象的数组的形式将请求传递给您,每个对象代表一个写入请求。在确保可以完成写入请求后,您可以写入特征的值,如下所示:

myCharacteristic.value = request.value;

虽然上面的例子没有说明这一点,但是在写你的特征值时一定要考虑到请求的偏移属性。

正如您响应读取请求一样,每次调用 peripheralManager:didReceiveWriteRequests: 委托方法时,只需调用一次 respondToRequest:withResult: 方法。也就是说,respondToRequest:withResult: 方法的第一个参数需要一个 CBATTRequest 对象,即使您可能从 peripheralManager:didReceiveWriteRequests: 委托方法收到了一个包含多个对象的数组。您应该传入数组的第一个请求,如下所示:

[myPeripheralManager respondToRequest:[requests objectAtIndex:0]

    withResult:CBATTErrorSuccess];
于 2013-10-09T18:14:12.507 回答