在两个 iOS 设备 (iPad-mini) 之间的通信停止后,完全重启 iOS 蓝牙 BTLE 中央和外围管理器的最佳方法是什么?
有时几分钟后,我的 BTLE 通信停止(中央无法从外围设备获得响应,尽管每个设备的调试输出显示应用程序仍在运行并且中央应用程序仍在尝试扫描外围设备,并且外围设备仍在广告),并且不会重新开始: 停止扫描和停止广告后,comm仍然不起作用; 重新打开应用程序后,通信仍然不起作用(!); 电源循环后,iPad 的通信再次工作,但几分钟后就消失了。
因此,我正在做的事情可能是破坏 iOS 核心蓝牙软件。
有时会有来自底层 BTLE 层的错误消息。
背景: 该系统中的每个 iPad 交替作为中心,向其他人读取/写入数据,然后作为外围设备,供其他人读取。绝不会同时发生,并且在转换之间有 1 秒的延迟。
最佳答案
蓝牙堆栈并不是 iOS 中最强大的部分。这在 iOS7 中可能有所改进,但问题一直存在。您很可能正在对系统施加压力,以便更频繁地发生这种挂起。您应该创建错误报告并将其发送给 Apple。或者创建一个 TSI,作为开发人员,您每年都有两个。他们是唯一可以为此做点什么的人。
要解决此问题,重启应用程序通常会有所帮助,但有时需要打开/关闭蓝牙,或者最坏的情况是设备需要重启。不幸的是,没有任何编程方式可以做到这些。
关于iphone - 如何在通信挂起后重启 iPhone/iPad Bluetooth LE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18404085/