我的应用程序使用 BLE(蓝牙 4)连接到物理外围设备。我和我的用户反复遇到一个错误,有时应用程序停止连接到外围设备 - 您可以看到发现 BLE 外围设备并建立连接的指示,但几秒钟后,连接断开.
只有在重新启动 iDevice 后,事情才会恢复正常。
我已经做了很长时间的检查工作并彻底研究了这个问题,直到我得出结论,这一定是 iOS 中的一个错误(用 7.1 测试过,但也可能发生在 8.0 上)。
我的测试和发现:
- 每个支持 iDevice 的 BLE 都会发生。
- 发生在我自己的 BLE 外围设备和其他 3rd 方 BLE 产品中,已知两者在正常情况下都能完美运行。
- 它有时甚至可以运行 50 次,但最终它会失败。
- 网络和出厂设置重置没有帮助。
- 通过各种应用程序测试并发生:##
- 尝试发现外围设备的服务时,连接过程似乎失败 - 即它被正常发现和连接,但是当启动服务发现时,它停止响应(未调用didDiscoverServices)。
- 我当然尝试了许多在网上找到的方法,但都没有运气。
任何人都可以阐明这个问题吗?
- 这是一个已知问题吗?
- 它在最近的 iOS 更新中修复了吗?
- 它会被修复吗?
您可以想象这样的问题对我的用户体验的负面影响,因为 BLE 连接对产品至关重要。
我会很感激你关于如何解决它的意见和建议。
谢谢!
更新:
Apple 回复了我的技术支持请求:
底线:
- 他们说他们已经修复了 iOS 8 中一些与 BLE 相关的错误,并敦促我们测试它是否仍然在 iOS 8 中发生。
- 他们说从那开始,如果没有,请尝试使用他们提供的实用程序来诊断问题。
到目前为止,对我来说,iOS 8 并没有发生这种情况,但另一方面,我可以看到有关其他蓝牙问题的帖子,这些帖子不一定相关,但谁知道呢。
完整答案:
我正在回应您的发现,即您和您的客户发现在某些使用点后,iOS BLE 无法保持连接。您指出问题是在 iOS 7.1 中发现的。有关于 iOS BLE 的问题已报告并已在 iOS 8.0 中修复。为了最好地确定您的问题是否已得到解决,最简单的方法当然是安装 iOS 8 并查看问题是否可以复制。但是,当您报告您可以使用 iOS 7.1 在您的设备上复制问题时,首先要获取蓝牙服务器配置文件,将其安装到您的设备,复制问题,然后在问题发生时获取 BLE 服务器日志。该配置文件将使 BLE 服务器报告其他日志记录详细信息,这有助于报告服务器遇到的问题。我们可以查看该问题是否是以前报告过的问题。需要考虑的是,对于所有新的错误报告问题,Core Bluetooth 工程部门要求使用当前发布的 iOS 版本(即 8.0)解决所有问题。对于使用 iOS 7.x 的客户,将不再有 iOS 7 更新 - 所有软件修复和错误修复都将与 iOS 8 一起使用。因此,只会调查 iOS 8 报告的问题。您可以从 Apple Developer 错误报告网页获取 BLE 服务器配置文件 将不再有 iOS 7 更新 - 所有软件修复和错误修复都将与 iOS 8 一起使用。因此,只会调查 iOS 8 报告的问题。您可以从 Apple Developer 错误报告网页获取 BLE 服务器配置文件 将不再有 iOS 7 更新 - 所有软件修复和错误修复都将与 iOS 8 一起使用。因此,只会调查 iOS 8 报告的问题。您可以从 Apple Developer 错误报告网页获取 BLE 服务器配置文件https://developer.apple.com/bug-reporting/ios/bluetooth/。网页上提供了安装配置文件和捕获日志的说明。如果您使用 iOS 7.x 捕获日志,可以将其发送给我进行审核。然而,这将是一个学术练习——要知道 iOS 是否解决了这个问题,或者它是否仍然存在,我们需要看看这个问题是否发生在 iOS 8 下。要记住,一旦你将设备更新到 iOS 8,您将无法将其恢复到以前的版本。我很高兴查看您的结果。但是,如果问题在 iOS 8 下仍然存在,最好提交错误报告以引起 Core Bluetooth 工程部门对此事的关注。您可以使用 Apple Developer 错误报告网页提交错误报告。- http://bugreport.apple.com