将 iOS BLE MTU 大小更改为 512 (SWIFT)

zor*_*rro 5 mtu ios bluetooth-lowenergy

有没有办法将 iOS 上的 MTU 值从默认值更改为任意值?

就像在 Android 中一样,可以执行 requestMTU(512)。

谢谢

ale*_*cpp 11

不,iOS 上的 MTU 是自动设置的,最大值是 185。这是对您的问题的一个很好的答案:https ://stackoverflow.com/a/42336001/10380092

注意:您可以通过这种方式获取 MTU 值(它将比 ATT MTU 少 3 个字节):

connectedPeripheral.maximumWriteValueLength(for: .withoutResponse)

使用参数很重要.withoutResponse,因为.withResponse它总是返回512(当使用响应写入时,iOS会自动选择方法:如果数据短于MTU,则单独写入,如果数据大于MTU,则排队写入)。

  • 您好,不确定原因,但我在 iOS 14 下进行测试,确实发现 MTU 最大为 182 (185)。我将手机更新到了 iOS 15,神奇的是我从我们正在开发的 BLE 设备中获得了 244。我知道这并没有更新我的芯片组,所以为什么 iOS 15 现在在相同的硬件上接受更多。 (2认同)