CoreBluetooth设备名称更改

时间:2014-09-18 21:02:54

标签: ios bluetooth core-bluetooth cbperipheral

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

  1. 通过我的应用程序连接到设备。
  2. 通过我的应用与设备断开连接。
  3. 更改设备名称。
  4. 通过我的应用程序(使用现有的CBPeripheral对象)重新发现/重新连接到设备。
  5. 按照上述步骤,我希望我的iOS应用程序能够发现新的设备名称。但是,我发现它倾向于保留旧名称。通过两次断开CBPeripheral设备,我发现我可以检索新名称。

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

    以下是类似问题:CoreBluetooth: Refreshing local name of an already discovered Peripheral

1 个答案:

答案 0 :(得分:12)

我遇到了类似的问题,而且只是设备的名称不是问题,但在特定模式下有些特征发生了变化(例如设备上的固件升级)。

从苹果得到以下答案:
"答案是附件需要支持GATT Service Changed特性 - 请阅读specification,特别是Vol 3,Part G,2.5.2和Vol 3,Part G,7.1 "

通过在广告数据中将设备名称公布为属性,解决了名称问题。 (但这可能需要特定的固件,因为它并不总是在adv包中具有该属性)

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