gpt4 book ai didi

ios - 什么是 [外设 maximumWriteValueLengthForType :CBCharacteristicWriteWithResponse] return?

转载 作者:行者123 更新时间:2023-11-29 11:50:42 35 4
gpt4 key购买 nike

我正在运行以下代码:

[peripheral maximumWriteValueLengthForType:CBCharacteristicWriteWithResponse];

在我的例子中(iPhone 7,iOS 10.0.2)它返回 512。这个数字是什么意思?

来自文档:

method maximumWriteValueLengthForType:

The maximum amount of data, in bytes, that can be sent to a characteristic in a single write type.

但如果我尝试发送 500600 字节,它的工作原理完全相同。目标设备接收所有数据。在这两种情况下都不会调用响应回调。

最佳答案

据我了解,理论上它应该返回 ATT MTU 大小,因为它是从中央请求到外围设备的。从外设来看,类似的值是central.maximumUpdateValueLength,建议避免发送特征值大于central.maximumUpdateValueLength的通知。但不幸的是,这没有明确记录,而且 Apple 自己的示例(BTETransfer 应用程序)使用默认的 ATT MTU 大小 20 以确保安全。对于通知,我认为,如果您尝试更改超过 central.maximumUpdateValueLength 字节,则可能会发生不好的事情。

但是从我在 Android 上的实验中,我发现从另一端 - 中央端 - 正在进行某种缓存并且可以发送比当前 ATT MTU 大小更多的字节(在 Android 上,它可用通过 onMtuChanged 并且似乎也在连接后立即协商到 512)。因此,我们可能会假设在 iOS 上正在进行相同类型的缓存,但我不确定它能达到多大。在 Android 上,我们至少有写入回调来知道何时写入更多数据是安全的。在 iOS 上,不确定如果我们尝试写入会发生什么,比方说从中央一侧的可写特征上的 1MB。但我今天会试试看。

此外,iOS 版本之间的行为可能不同,因为 central.maximumUpdateValueLength 自 iOS 7 起可用,但 peripheral maximumWriteValueLengthForType 仅自 iOS 9 起可用。

关于ios - 什么是 [外设 maximumWriteValueLengthForType :CBCharacteristicWriteWithResponse] return?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41289783/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com