CoreBluetooth和Wifi干扰

Leh*_*ves 3 wifi ios core-bluetooth

我真的遇到了问题,因此,不用说,我需要你的帮助.我正在使用CoreBluetooth在两个iDevices之间进行通信,它是相同的应用程序,在一台设备上作为中心运行,在另一台设备上作为外围设备运行.在某些情况下,中央会丢失与外围设备的连接,并出现以下错误:

Error Domain=CBErrorDomain Code=10 "The connection has failed unexpectedly." UserInfo=0x14ee8fe0 {NSLocalizedDescription=The connection has failed unexpectedly.}
Run Code Online (Sandbox Code Playgroud)

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

你有什么建议,解决方法吗?这两款设备都运行iOS 7.1.1

all*_*rog 7

这是一个众所周知的问题,它有一个确认适用于Mac端的解决方案.

sudo defaults write /Library/Preferences/com.apple.airport.bt.plist bluetoothCoexMgmt Hybrid
Run Code Online (Sandbox Code Playgroud)

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

以下是解释:

背景:经过大量的窥探和头部刮擦,这就是我发现的:这里的问题似乎是系统没有使用与BT Classic相同的蓝牙/机场共存模式.一个告诉故事标志:如果您有任何BT Classic设备已连接且处于活动状态,则该错误将不会重现(对于Classic设备或任何连接的BLE设备都不会).Classic设备断开连接的那一刻,错误重现(即所有BLE连接也被丢弃).

此外,我能够在机场配置代理的符号表中找到参考共存模式的覆盖设置.如果您将上述手动模式设置为"混合"(与连接经典设备时通常调用的模式相同),则该错误不再重现.

所有的积分都来自Knock的William Henderson这个技巧.

有些情况下iOS设备也会感受到相同的效果.有时核心蓝牙连接不稳定时会发生这种情况.有时,这可能导致WiFi连接无法使用.但它很难重现,至少我无法重现,你的问题也不关心它.