重新发现连接设备中的服务?

时间:2017-03-10 22:29:33

标签: ios core-bluetooth

我在BLE设备上有一个隐藏的服务/特性,只有在您将“正确”命令发送到另一个特征时才会显示。但是,如果我保持连接状态,只需调用“discoverServices:nil”或“discoverServices:service-i-care-about”,它就会在启用后找不到它。

我更改了固件以使设备在断开连接时不会隐藏服务(这是我想要的),但要坚持下去,我知道服务已启用,因为我可以重新连接到设备和服务出现了。

我不想这样做,因为隐藏服务的重点是你必须发送正确的命令来启用服务(对于记录,它是由MCU供应商提供的固件更新服务,所以我无法将服务更改为“我的”服务或在服务本身周围放置任何安全性)

这是预期的蓝牙行为吗?或者iOS是否可能缓存某些东西而且我必须做些什么来使它不能获得缓存的值?

1 个答案:

答案 0 :(得分:0)

iOS出于性能原因缓存任何已发现的外围设备以及相应的服务和特性。如果您需要在任何给定时间更改外围设备的GATT表,您可以通过两种方式告知中心:

  1. 通过服务变更特征
  2. 告诉中央
  3. 更改外围设备的mac地址(不推荐,但有些芯片组制造商使用此解决方法,例如BLE引导程序中的NordicSemi)
  4. 我们也遇到了这个问题,因为我们需要隐藏嵌入式设备的固件更新服务,直到我们跳转到引导加载程序。