未接收到使用CoreBluetooth(iPhone 6)的外围设备发现回调



我正在尝试连接到2个BLE外围设备,然后发现它们的服务。

如果我没有与它们配对,则效果良好,并且我可以根据需要多次重复此操作。然而,如果我与配对,在尝试连接几次后发现它们(大约10次,有所不同),我不会收到核心蓝牙回调:

func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?)

形势总是这样变化:

  • 我收到两个外围设备的回调
  • 我丢失了一个外设的回调,但没有丢失另一个外设
  • 我失去了两个外围设备的回调

我注意到,只要我清除配对设备列表,它就会再次正常工作。

我觉得这可能和一些服务的缓存有关,但我找不到太多关于这方面的信息。我应该在开始查找之前检查缓存吗?

我尝试过的:

  • 关闭/打开BLE
  • 重新启动手机
  • 重新启动外围设备

编辑:

当其中一个设备无法被发现时,任何第三方应用程序也无法发现它。我尝试了LightBlue和BLE Discovery。

编辑2:

这个错误不会出现在iPhone 5S和6S+上。

糟糕的是,这些设备确实出现了,但名称不同。

我使用的BLE设备有一个不同于GAP名称的广告名称。因此,在第一次连接到设备之前,我可以在扫描结果中看到他的广告名称,但一旦我连接到它,扫描结果中就会出现他的GAP名称(我相信它是iOS缓存的)。

我不能很快弄清楚,因为我在一个有很多BLE设备的环境中工作。

相关内容

最新更新