Eth*_*urn 5 iphone ios core-bluetooth
我对CBMutableCharacteristic的特征值有多长时间感到困惑.如果我有一个存档的对象数组,我可以将特征值设置为此存档数组吗?或者我最好为阵列中的每个存档对象分别设置一个特性?
该规范将特征值的最大长度限制为512个八位字节(蓝牙规范V4.0第3卷第3部分第3.2.9节).在中央,您可以使用readValueForCharacteristic:
API 启动读取请求.然后在外围端,您会收到相应的回调:
CBMutableCharacteristic *characteristic = // the characteristic with long data
- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveReadRequest:(CBATTRequest *)request {
// Ensure offset is in the valid range
if (request.offset > characteristic.value.length) {
// respond with error
[self.peripheralManager respondToRequest:request withResult:CBATTErrorInvalidOffset];
return;
}
NSRange range = NSMakeRange(request.offset, characteristic.value.length - request.offset);
request.value = [characteristic.value subdataWithRange:range];
[self.peripheralManager respondToRequest:request withResult:CBATTErrorSuccess];
}
Run Code Online (Sandbox Code Playgroud)
offset
只要响应不小于最大可传输单元(MTU),就会以增加的值调用回调.MTU由系统协商,您无法提前查询.因此,range
设置为一直延伸到数据长度,以便系统可以决定将多少数据发送到中心.默认情况下,它是20,但iOS 7有一些调整,可以实现更大的尺寸.查看WWDC视频以获取更多详细信息.
有了这些信息,您应该能够找到一种方法来公开您的数据.请记住,您拥有的服务和特征越多,发现所需的时间就越长.使用长读和长写只是一种方便.
归档时间: |
|
查看次数: |
4685 次 |
最近记录: |