iOS BLE在连接后立即断开连接,只有重启设备才有帮助

mll*_*llm 5 objective-c ios core-bluetooth bluetooth-lowenergy ios-bluetooth

我的应用程序使用BLE(蓝牙4)连接到物理外围设备.我的用户和我一再遇到一个错误,在某些时候,应用程序停止连接到外围设备 - 您可以看到发现BLE外围设备并建立连接的指示,但几秒钟之后,连接被丢弃.

只有在重新启动iDevice后,事情才会恢复正常.

我已经做了很长时间的检查,并彻底研究了这个问题,直到我得出结论,这必定是iOS中的一个错误(用7.1测试,但也可能在8.0上发生).

我的测试和发现:

  • 每个支持iDevice的BLE都会发生.
  • 与我自己的BLE外设和其他第三方BLE产品一起发生,这两种产品都可以在正常情况下完美地工作.
  • 它有时可以很好地适用于50次发射,但最终它会失败.
  • 网络和出厂设置重置没有帮助.
  • 经过各种应用测试和发生:##
    • 我自己的应用程序
    • 清理新的Xcode项目,该项目仅扫描外围设备并尝试连接到第一个也是唯一一个发现的外围设备.
    • Apple的BLE示例应用程序:Health Thermometer(由于我没有这个特定的外围设备,因此进行了相关修改).
    • 第三方应用程序,包括通用LightBlue.
    • 重要提示:上述每个选项都可以完美地工作一段时间(多次启动),在某些时候突然停止,然后在重启设备后再次工作.
  • 尝试发现外围设备的服务时,连接过程似乎失败 - 即它被正常发现和连接,但是当启动服务发现时,它会停止响应(不会调用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复制问题时,首先要获取蓝牙服务器配置文件,将其安装到您的deivce,复制问题,然后在出现问题时获取BLE服务器日志.该配置文件将让BLE服务器报告其他日志记录详细信息,这有助于报告服务器遇到的问题.我们可以看看问题是否是之前报道的问题.需要考虑的是,对于所有新的错误报告问题,Core蓝牙工程师要求使用当前发布的iOS版本(即8.0)回退所有问题.对于使用iOS 7.x的客户,将不再有iOS 7更新 - 所有软件修复和错误修复都将在iOS 8中使用.因此,只会调查iOS 8报告的问题.您可以从Apple Developer错误报告网页https://developer.apple.com/bug-reporting/ios/bluetooth/获取BLE服务器配置文件.安装配置文件和捕获日志的说明显示在网页上.如果您使用iOS 7.x捕获日志,则可以将其发送给我进行审核.然而,这将是一个学术练习 - 要知道iOS是否解决了这个问题,或者它是否仍然存在,我们需要看看问题是否发生在iOS 8下.一旦你将设备更新到iOS,需要记住一些事情8,您将无法将其还原到以前的版本.我很高兴看看你的结果.但是,如果问题在iOS 8下仍然存在,最好提交错误报告以获得Core Bluetooth工程师对此事的关注.您可以使用Apple Developer错误报告网页提交错误报告.- http://bugreport.apple.com

mll*_*llm 0

所以看来最近的 iOS 更新(8.0 或 8.1)已经解决了这个问题。