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

时间:2017-01-10 16:20:09

标签: ios core-bluetooth

我尝试连接2个BLE外设,然后发现他们的服务。

如果我未配对,它可以正常工作,我可以根据需要多次重复此操作。 但是,如果我与他们配对,经过几次尝试连接然后发现它们(大约10,它会有所不同),我就不会收到CoreBluetooth回调:

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

这种情况总是以这种方式改变:

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

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

我觉得这可能与某些服务的缓存有关,但我无法找到有关该服务的更多信息。我应该在开始发现之前检查缓存吗?

我尝试过的事情:

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

编辑:

当其中一个设备未能被发现时,任何第三方应用也无法发现它。我尝试了LightBlueBLE Discovery

编辑2:

此错误未显示在iPhone 5S和6S +上。

1 个答案:

答案 0 :(得分:0)

我的不好,设备确实出现了,但名字不同。

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

我无法快速解决这个问题,因为我在很多BLE设备的环境中工作。