iOS蓝牙在连接之后立即断开,只有重启设备才能帮助解决。

5
我的应用使用BLE(蓝牙4.0)连接到物理外围设备。我和用户反复遇到一个问题,即在某个时刻,应用程序停止连接到外围设备 - 你可以看到指示发现了BLE外围设备并建立了连接,但几秒钟后,连接就会断开。
只有重新启动iDevice,事情才能恢复正常。
我已经做了很长时间的检查,并彻底研究了这个问题,直到得出结论,这一定是iOS中的一个错误(测试过7.1,但可能也会在8.0上发生)。
我的测试和发现:
  • 出现在每个支持BLE的iDevice上。
  • 出现在我自己的BLE外设和其他第三方BLE产品上,这些产品在正常情况下都能完美工作。
  • 有时它甚至可以正常工作50次启动,但最终会失败。
  • 网络和出厂设置重置没有帮助。
  • 测试并出现在各种应用程序中:##
    • 我的应用程序。
    • 仅扫描外设并尝试连接到第一个和唯一发现的外设的干净新Xcode项目。
    • 苹果的BLE示例应用程序:Health Thermometer(由于我没有这个特定的外设,所以进行了相关修改)。
    • 第三方应用程序,包括通用的LightBlue
    • 重要提示:以上所有选项都在一段时间内完美工作(多次启动),某个时刻突然停止,然后在设备重新启动后再次工作。
  • 连接过程似乎在尝试发现外设的服务时失败了 - 即它被发现并正常连接,但在启动服务发现时停止响应(didDiscoverServices没有被调用)。
  • 我当然尝试了许多在线找到的方法,但没有成功。

有人能解决这个问题吗?

  • 这是一个已知的问题吗?
  • 最近的iOS更新中修复了吗?
  • 它会被修复吗?

你可以想象这种问题对我的用户体验所产生的负面影响,因为BLE连接对于产品至关重要。

我将感激您对如何解决此问题的建议和建议。

谢谢!

更新:

苹果回复了我的技术支持请求:

底线:

  • 他们说他们已经在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下报告的问题才会得到调查。您可以从苹果开发者错误报告网页https://developer.apple.com/bug-reporting/ios/bluetooth/获取BLE服务器配置文件。安装配置文件和捕获日志的说明在该网页上呈现。如果您使用iOS 7.x捕获日志,可以将其发送给我进行审核。然而,这将是一个有点学术性的练习 - 要知道iOS是否解决了该问题,或者它是否仍然存在,我们需要看看该问题是否在iOS 8下发生。需要记住的一件事情是,一旦将设备更新为iOS 8,就无法将其恢复到以前的版本。我很高兴审查你的结果。但是,如果问题在iOS 8下仍然存在,则最好提交错误报告以引起Core Bluetooth工程的注意。您可以使用苹果开发者错误报告网页http://bugreport.apple.com提交错误报告。

我在7.1上遇到了一些类似的行为,但是在iOS 8上,使用实现串口接口的模块时更频繁地出现这种情况,即使重新启动设备也似乎没有帮助,而且在该模块的演示应用程序以及我们的应用程序和LightBlue中也会发生。我不确定这是否与您遇到的问题有关。当发生这种情况时,我仍然可以使用LightBlue连接到其他设备,例如Fitbit,因此它并不影响所有设备。 - James Snyder
这个问题已经在这里讨论过了:当它一分钟前还能正常工作时,由于某种未知原因无法搜索服务,你可能会找到一些答案。我遇到过不止一次,除了开关我的iDevice、BLE设备甚至重置BLE设备之外,我无法避免它。 - Larme
1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接