Ios 未通过CoreBluetooth(iPhone 6)接收外围设备发现回调

Ios 未通过CoreBluetooth(iPhone 6)接收外围设备发现回调,ios,core-bluetooth,Ios,Core Bluetooth,我正在尝试连接到2个BLE外围设备,然后发现它们的服务 如果我没有与他们配对,它可以正常工作,我可以重复这个动作任意多次。 但是,如果我与它们配对,在尝试连接几次后发现它们(大约10次,有所不同),我不会收到CoreBooth回调: func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) 情况总是这样变化的: 我收到两个外围设备的回调 我丢失了一个外设的回调,但另一个外设没有 我丢失了两个外

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

如果我没有与他们配对,它可以正常工作,我可以重复这个动作任意多次。 但是,如果我与它们配对,在尝试连接几次后发现它们(大约10次,有所不同),我不会收到CoreBooth回调:

func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?)
情况总是这样变化的:

  • 我收到两个外围设备的回调
  • 我丢失了一个外设的回调,但另一个外设没有
  • 我丢失了两个外围设备的回拨
我注意到,一旦我清除了配对设备列表,它就会再次正常工作

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

我所尝试的:

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

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

编辑2:


这个bug没有出现在iPhone 5S和6S+上。

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

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


我不能很快弄明白这一点,因为我在一个有很多可编程设备的环境中工作。

在完成完整的出厂重置后,问题消失了几次,然后又出现了。。。