[iOS] [BLE]获取谈判MTU

ant*_*é75 3 mtu ios bluetooth-lowenergy

我目前正在iOS中开发一个BLE应用程序.在我的应用程序中,我需要实现一个分段协议来使用BLE发送大数据.我的应用程序需要具有Central角色.

我的问题是我无法获得谈判MTU.我可以得到我的外围设备的maximumWriteValueLength,但它比我的更大,并且找不到我的中心对象的maximumWriteValueLength.

有人知道找到协商MTU的方法或访问我的CBCentralManager的CBCentral对象的方法吗?

小智 7

iOS在连接时自动启动MTU交换.

运行iOS <10的设备将请求MTU大小为158.运行iOS 10的较新设备将请求MTU大小为185.

假设您连接的设备支持这些尺寸,那就是您应该看到的.

您应该能够通过查看maximumUpdateValueLength属性来确定协商的最大有效负载大小CBCentral.(注意,这将比ATT MTU小3个字节,因为这是ATT通知/指示的开销)


ant*_*é75 0

我会为有同样问题的人解答。

目前(2017 年 2 月)iPhone 的外围设备 MTU 始终为 158。所以我在简短的解决方案中发现(只是为了做一些测试)是将中央 MTU 与 158 进行比较并取较小的一个。对于更稳定的外设解决方案,会将 MTU 大小写入特定特征中,我将在连接后读取该特征。

  • 您是如何获得中央 MTU 的? (2认同)