美文网首页iOS CoreBluetooth
iOS BLE外设名称更新后不正确的原因

iOS BLE外设名称更新后不正确的原因

作者: 淇则有岸_1fb5 | 来源:发表于2018-11-28 15:20 被阅读0次

笔者最近在做一个BLE相关的项目开发过程中遇到这样一个问题,当一个外设(peripheral)已经连接与ipad连接成功后,如果修改外设的名称,ipad扫描外设后获得的仍然是之前的名称,新名称不知所踪。检查代码后,我发现我的代码并没有问题,打印出个的perpheral.name依然是以前的值,

解决方法

APP当作蓝牙中心,连接其他的蓝牙外设时,首次连接成功过后,iOS系统内会将改外设缓存记录下来,下次重新搜索时,搜索到的蓝牙外设时,直接打印peripheral.name,得到的是之前缓存中的蓝牙名称,如果此期间蓝牙外设有更新蓝牙名称的话,这个参数并不会改变,所以需要换一种方式获取蓝牙外设的名称,广播数据包内就有一个字段kCBAdvDataLocalName,可以从中获取

  • OC
-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI{
        NSString *localName = [advertisementData objectForKey:@"kCBAdvDataLocalName"];
        //you to do
} 
  • Swift
  func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
        let localName = advertisementData["kCBAdvDataLocalName"]
        //you to do
    }

Note

  • iOS SDK 不提供强制刷新外围设备名称的方法,如果希望获取一以标识符来做设备绑定或断线重连时,最好用apple 提供的方法获取UUID进行绑定,或者和硬件工程师合作把设备MAC地址放在广播数据中发出来
  • 这里有两个Name需要注意,一个是GAP name,一个是一个 advertising name,设备没有连接外设时,获取的perpheral.name会是advertising name,然后当设备第一次连接成功外设后,GAP name就会被缓存下来,以后在连接时,获取的也都是GAP Name, 这样就造成了修改名称后苹果设备不更新的问题,指的一提的是,苹果并不要求着两个名字相同, 所以除了上文提到的直接获取广告名字外,也可以让硬件工程师直接修改GAP name.

相关文章

  • iOS BLE外设名称更新后不正确的原因

    笔者最近在做一个BLE相关的项目开发过程中遇到这样一个问题,当一个外设(peripheral)已经连接与ipad连...

  • CoreBluetooth

    iOS-BLE蓝牙开发持续更新 - 简书 蓝牙打印小票 一个第三方 IOS BLE4.0蓝牙和外设连接和收发数据的...

  • (蓝牙低功耗)BLE

    BLE 此插件可实现手机与蓝牙低功耗(BLE)外设之间的通信。该插件为iOS和Android提供了一个简单的Jav...

  • iOS BLE蓝牙基础详解(两种模式)

    iOS BLE框架详解 概述 使用蓝牙开发无外乎两种,当做主设备(Central)或者外设(Peripheral)...

  • 蓝牙相关

    https://www.jianshu.com/p/03d617921aef IOS9 BLE 与外设交互及设备绑...

  • 12月第三周

    iOS-BLE蓝牙开发持续更新 - IOS - 伯乐在线 ReactiveCocoa 中 RACSignal 所有...

  • iOS外设连接黑科技,不需要MFI认证,实现USB连接

    之前我写过一篇文章《iOS连接外设的几种方式小结,包括MFi的和非MFi的》,主要有BLE,网络(wifi,usb...

  • 蓝牙通信

    BLE中心模式流程-coding BLE中心模式流程 1.建立中心角色 2.扫描外设(Discover Perip...

  • BLE中心模式流程

    BLE中心模式流程 1.建立中心角色 2.扫描外设(Discover Peripheral) 3.连接外设(Con...

  • Linux 端蓝牙调试工具

    Linux 端蓝牙调试 @(嵌入式)[BLE] 毕业大半年一直从事Ble外设开发,发现linux上可以使用blue...

网友评论

    本文标题:iOS BLE外设名称更新后不正确的原因

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