2014-09-18 116 views
3

我目前正在创建一个简单的iOS蓝牙应用程序。我目前有一个能够修改名称的设备。我发现的是,当我连接到CBPeripheral设备时,它似乎在缓存旧的设备名称。CoreBluetooth设备名称更改

  1. 通过我的应用程序连接到设备。
  2. 通过我的应用程序断开与设备的连接。
  3. 更改设备的名称。
  4. 通过我的应用程序(使用现有的CBPeripheral对象)重新发现/重新连接到设备。

按照上述过程,我期待我的iOS应用程序发现新的设备名称。但是,我发现它有一个保留旧名称的倾向。通过断开CBPeripherals两次,我发现我可以检索新名称。

所以我的问题是,有没有办法更新或清除CBPeripheral的现有发现特征(或每次重新发现新特征)以获取最新的设备名称?

这里有一个类似的问题:CoreBluetooth: Refreshing local name of an already discovered Peripheral

回答

11

我有一个类似的问题,而且这不是一个问题只与设备的名称,但一些characterstics在特定模式下(如在设备上固件升级)改变。

得到了苹果以下答案:
“答案是,所述附件需要支持GATT服务改变特性 - 请阅读specification,具体地第3卷,部分G,2.5.2,和第3卷, G部分,7.1。“

名称问题已通过将设备名称作为广告数据中的一个属性公布来解决。 (然而,这可能需要特定的固件,因为它并不总是有这种特性在进阶包)

否则重置核心蓝牙缓存:您将需要重新启动iOS的蓝牙适配器,我不能无法在iOS上以编程方式进行操作。