【问题标题】:CoreBluetooth device name changeCoreBluetooth 设备名称更改
【发布时间】:2014-11-13 08:39:55
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ios bluetooth core-bluetooth cbperipheral


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我只需要更新外设名称,我还需要 GATT 服务更改特性吗?据我所知,它只是谈论如果服务会改变,你需要有特征。
    猜你喜欢
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多