在 Android 上,我们有requestMtu
和onMtuChanged
,这似乎意味着我们必须手动协商 MTU 大小,如果中央设备和外围设备都是基于 Android 的(但我可能错了,它可能在连接时自动发生而无需我干预)。仅讨论写入请求(无响应写入)操作的文档requestMtu
并没有提及通知,并且还说它是用于“连接”但没有提及它是来自中央还是外围。
因此,尚不清楚连接的哪一侧可以/应该使用requestMtu
以及它如何影响通知大小和写入大小?
在 iOS 上,似乎没有直接的替代方案requestMtu
,我们只有central.maximumUpdateValueLength
(我猜是从 iOS 7 开始)。它的文档(与 Android 的文档相反)说这maximumUpdateValueLength
仅用于通知更新,这意味着它仅在外围设备端有用,因为您将通知从外围设备发送到中央。
但是写呢?如果我正在写入(再次没有响应)从中央到外围的特征,我如何知道我的批量大小以确保高效写入?
考虑到混合系统(Android/iOS 中央/外围),这一切都变得令人困惑,并且完全不清楚哪一方以及何时可以/应该请求/响应 MTU 大小协商。是否有任何文档描述 ATT MTU 交换选项,对应于真正的 Android 和 iOS 实现?