2

当我收到一个

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests

目前尚不清楚我是否应该填写所有请求但只成功响应第一个请求,或者我是否应该只完成第一个写入请求并成功响应第一个请求。

当我收到委托方法时,我首先遵循 Apple 的说明

像对待单个请求一样对待多个请求 - 如果无法满足任何单个请求,则不应满足其中任何一个请求。相反,请立即调用 respondToRequest:withResult: 方法并提供指示失败原因的结果。

通过做

// TODO: doesn't yet take into account offset (request.offset > characteristic.value.length)
for (CBATTRequest *r in requests) {
    if ([validIds indexOfObject:[r.characteristic.UUID UUIDString]] == NSNotFound) {
        NSLog(@"Cannot fulfill write request: %@", r);
        [self.manager respondToRequest:requests[0] withResult:CBATTErrorWriteNotPermitted];
        return;
    }
}

但是,一旦我通过了这个,并且知道我可以满足所有请求,就不清楚我是否应该真正遍历所有请求并为每个请求写入特征值,然后当我'我只响应第一个请求,或者我是否应该满足第一个请求并成功响应?

4

0 回答 0