iOS蓝牙修改设备名后没有修改的问题

现在做了一个项目,需要用蓝牙对接硬件。有一个需求就是修改设备名字。然后我就很开心的发指令修改。然后写入数据成功后,但是蓝牙设备名一直没有变。这就然我感到很诧异,难道是我的指令发送错了吗?接下来就是漫长的研究。

以下代码的前提是我已经把设备名字“147”改成了“369”

#pragma mark - 扫描设备,发现设备的回调
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)args_peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI{
	//如果直接获取设备的名称,这时会可能获取不到修改后的设备名
	NSLog(@"发现设备:%@",args_peripheral.name)
}

打印结果:
在这里插入图片描述
如上图可以看到设备名字还是147
这是为什么呢,经过研究发现,蓝牙扫描设备是有缓存的,蓝牙发现设备后,会缓存一下。这就造成了修改后的设备名称没有修改,实际上是设备名称已经修改了,实际上扫描设备已经修改了名字
那这怎么获取修改后的名字呢,其实需要用到 kCBAdvDataLocalName键值来获取设备名而不是直接获取args_peripheral.name这种方式获取。修改代码如下

#pragma mark - 扫描设备,发现设备的回调
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)args_peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI{
	//如果直接获取设备的名称,这时会可能获取不到修改后的设备名
	NSLog(@"发现设备:%@",args_peripheral.name)
	//通过下边方式获取设备名
	NSString *nameStr = [advertisementData objectForKey:@"kCBAdvDataLocalName"];
    NSLog(@"***********************   %@",nameStr);
}

打印结果在这里插入图片描述
可以看到下边已经变成369了
好了,到此已经解决设备名不显示修改后的名称了,大家加油

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值