核心蓝牙和Wifi干扰



我真的被一个问题难住了,因此,不用说,我需要你的帮助。我用CoreBluetooth在两台设备之间进行通信,它是同一款应用,在一台设备上作为中心设备运行,在另一台设备上作为外围设备运行。在某些情况下,中央服务器会失去与外设的连接,并出现以下错误:

Error Domain=CBErrorDomain Code=10 "The connection has failed unexpectedly." UserInfo=0x14ee8fe0 {NSLocalizedDescription=The connection has failed unexpectedly.}

在这个特殊的例子中,外围设备是iPad 4,中心设备是iPad mini。我追踪了这个问题,事实证明,一旦我遇到这个问题,每次我连接时问题都会持续存在,无论重新启动应用程序,甚至是双方的蓝牙,然而,有趣的部分是,如果我关闭中央设备上的Wifi,连接不再超时。

你有什么建议,变通方法吗?两个设备都运行iOS 7.1.1

这是一个众所周知的问题,它有一个解决方案,被证实适用于Mac端。

sudo defaults write /Library/Preferences/com.apple.airport.bt.plist bluetoothCoexMgmt Hybrid

运行此脚本后,问题将消失,BT连接将保持稳定。

解释如下:

背景:经过大量的窥探和挠头,这是我发现的:这里的问题似乎是系统没有使用相同的蓝牙/机场共存模式为BLE,因为它使用BT经典。一个迹象是:如果你连接了任何BT Classic设备并处于活动状态,这个bug就不会重现(无论是Classic设备还是任何连接的BLE设备)。当经典设备断开连接时,错误会重新出现(即所有BLE连接也会断开)。

此外,我能够在机场配置代理的符号表中找到对共存模式的覆盖设置的引用。如果您像上面那样手动将模式设置为'hybrid'(与连接经典设备时通常调用的模式相同),则该错误不再重现。

所有的功劳都归功于Knock的William Henderson。

在iOS设备上也有同样的效果。当核心蓝牙连接不稳定时,有时会发生这种情况。有时这会导致WiFi连接无法使用。但是很难复制,至少我不能,你的问题也不涉及它。

最新更新