美文网首页iOS技术集
iOS 蓝牙设备名称缓存问题总结

iOS 蓝牙设备名称缓存问题总结

作者: Swift社区 | 来源:发表于2020-08-27 17:52 被阅读0次

1. 问题背景

  1. 当设备已经在 App 中连接成功后
  2. 修改设备名称
  3. App 扫描到的设备名称仍然是之前的名称
  4. App 代码中获取名称的方式为(perpheral.name)

2. 问题分析

当 APP 为中心连接其他的蓝牙设备时。

首次连接成功过后,iOS系统内会将该外设缓存记录下来。

下次重新搜索时,搜索到的蓝牙设备时,直接打印 (peripheral.name),得到的是之前缓存中的蓝牙名称。

如果此期间蓝牙设备更新了名称,(peripheral.name)这个参数并不会改变,所以需要换一种方式获取设备的名称,在广播数据包内有一个字段为 kCBAdvDataLocalName,可以实时获取当前设备名称。

3. 问题解决

下面给出OC 和 Swift 的解决方法:

OC

-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI{
        NSString *localName = [advertisementData objectForKey:@"kCBAdvDataLocalName"];
} 

Swift

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
        let localName = advertisementData["kCBAdvDataLocalName"]
}

相关文章

  • iOS 蓝牙设备名称缓存问题总结

    1. 问题背景 当设备已经在 App 中连接成功后 修改设备名称 App 扫描到的设备名称仍然是之前的名称 App...

  • iOS BLE缓存与mac地址问题

    1、缓存问题iOS设备会对每台BLE设备进行缓存,记录设备名称,对应的服务与特征,但是如果进行DFU之后,修改了设...

  • 蓝牙外设连接原理

    一、苹果系统底层蓝牙扫描设备名称原理 1、第一次连接设备,系统无GAP层设备名称缓存,此时扫描到的设备名称为设备广...

  • iOS蓝牙的开发专题

    iOS蓝牙的开发专题 最近做一个iOS蓝牙设备的项目,需要用iOS连接外部蓝牙设备,就对iOS蓝牙相关技术做了一些...

  • 蓝牙开发

    蓝牙开发使用CoreBluetooth框架实现两个iOS设备、iOS设备与非iOS蓝牙设备的交互。要注意的一点是目...

  • iOS蓝牙开发(一)蓝牙相关基础知识

    iOS蓝牙开发一 iOS蓝牙开发(一)蓝牙相关基础知识 蓝牙常见名称和缩写 MFI ======= make fo...

  • 蓝牙开发

    iOS蓝牙开发 Bluetooth蓝牙CoreBluetooth 蓝牙中心设备的实现 蓝牙外设的实现 有Demo ...

  • iOS蓝牙开发 Bluetooth蓝牙CoreBluetooth

    iOS蓝牙开发 Bluetooth蓝牙CoreBluetooth 蓝牙中心设备的实现 蓝牙外设的实现 有Demo ...

  • iOS 蓝牙特技

    常用iOS 蓝牙 系统框架:CoreBlueTooth 简介: 可用于第三方蓝牙设备交互,设备必须支持蓝牙4.0 ...

  • 7.充分利用蓝牙设备

    iOS中蓝牙SDK是CoreBlueTool.framework,iOS 5后可用,专门为蓝牙LE设备设计。蓝牙4...

网友评论

    本文标题:iOS 蓝牙设备名称缓存问题总结

    本文链接:https://www.haomeiwen.com/subject/ciqhsktx.html