【问题标题】:Clearing iOS BLE cache清除 iOS BLE 缓存
【发布时间】:2015-05-26 01:45:21
【问题描述】:

我目前在 iOS 7 上运行。扫描期间检索到的 BLE 外围设备名称似乎是根据地址缓存的。即使用新值刷新了 BLE 设备的名称,在 iOS 7 的外围设备发现[myCentralManager scanForPeripheralsWithServices:nil options:nil]; 期间,我也会在刷新之前获得旧设备名称。

  1. 有没有办法以编程方式清除 BLE 设备缓存?
  2. 即使使用手动冲洗似乎也是不可能的。在设置->蓝牙下,BLE 设备似乎从未被列出,尽管能够以编程方式扫描和连接。 (按照指示here)这是为什么呢?

【问题讨论】:

  • 关于第二个问题的答案,请参阅我的回答 stackoverflow.com/questions/28841590/… 重新设置 BLE 设备在设置->蓝牙中可见的条件
  • @huggie 我在 iOS 8 上遇到了同样的问题,你找到解决方案了吗?
  • @Kai 不走运。我似乎总是得到相同的旧结果,但我没有找到解决方法。
  • @Kai 顺便说一句,它似乎与 BLE 芯片有关。有些芯片似乎没有同样的问题。
  • 手动关闭蓝牙为我清除了缓存。那么,我假设以编程方式关闭和打开蓝牙也可能起到作用,尽管这不是最好的用户体验。

标签: ios bluetooth-lowenergy core-bluetooth


【解决方案1】:

我会推荐一种最有效和最暴力的解决方案 我的方法奏效了!!!

重置你的 iPhone

设置 --> 常规 --> 删除所有内容和设置

然后再次扫描。它奏效了。

其他方式:

现在让我告诉你解决问题的正确方法:

有 2 个名字需要考虑。广告名称和 GAP(通用访问配置文件)名称。

对于 iOS 以前从未连接过的外围设备,报告的 'name' 属性是广告名称。连接后,GAP 名称将被缓存,并报告为外围设备的名称。由于广告名称的大小限制,GAP 名称被认为是“更好”的名称。

没有规定两个名称必须匹配的规则。这取决于您的用例和实现。有些人会认为 GAP 名称是固定名称,但广告名称更像是“别名”,因为它很容易更改。

如果您希望两个名称同步,则应更改 GAP 名称以及广告名称。正确实施,您的 CB 经理代表将收到对 - peripheralDidUpdateName 的调用: 如果要手动清除缓存,需要重置iOS设备。

链接(https://forums.developer.apple.com/thread/19381)

其实没有调用这个方法(peripheralDidUpdateName)

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI {

    NSString * gapName = peripheral.name;
    NSString * identityName = [advertisementData objectForKey:CBAdvertisementDataLocalNameKey];
}

更精确地使用 [advertisementData objectForKey:CBAdvertisementDataLocalNameKey] 获得外设名称比 外围设备名称

因为 peripheral.name 获得了 GAP 名称,但 [advertisementData objectForKey:CBAdvertisementDataLocalNameKey] 获得了更新后的名称。

【讨论】:

  • CSS v7§1.2.1:“本地名称数据类型应与分配给设备的本地名称相同或缩短版本。[...] 如果名称是缩短后,可以使用远程名称请求过程通过 BR/EDR 读取完整名称,也可以在使用 GATT 建立连接后读取设备名称特征。缩短的名称应仅包含从全名开头开始的连续字符。例如,如果设备名称是 'BT_Device_Name',那么缩短的名称可能是 'BT_Device' 或 'BT_Dev'。"
猜你喜欢
  • 2020-02-08
  • 2015-11-25
  • 1970-01-01
  • 2013-09-09
  • 1970-01-01
  • 2019-09-29
  • 2012-12-06
  • 2012-10-14
  • 1970-01-01
相关资源
最近更新 更多