3

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

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

按照上面的步骤,我希望我的 iOS 应用程序能够发现新的设备名称。但是,我发现它倾向于保留旧名称。通过两次与 CBPeripheral 设备断开连接,我发现我可以检索到新名称。

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

这是一个类似的问题:CoreBluetooth: Refreshing local name of an already found Peripheral

4

1 回答 1

12

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

从苹果得到以下答案:
“答案是配件需要支持 GATT Service Changed 特性 - 请阅读规范,特别是 Vol 3, Part G, 2.5.2 和 Vol 3, Part G, 7.1。”

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

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

于 2014-09-19T09:36:46.577 回答