iOS蓝牙设备名称缓存问题的解决方法
1.问题背景
- 当设备已经在App中连接成功后
- 修改设备名称
- App扫描到的设备名称仍然是之前的名称
- App代码中获取名称的方式为(perpheral.name)
2.问题分析
当APP为中心连接其他的蓝牙设备时。
首次连接成功过后,iOS系统内会将该外设缓存记录下来。
下次重新搜索时,搜索到的蓝牙设备时,直接打印(peripheral.name),得到的是之前缓存中的蓝牙名称。
如果此期间蓝牙设备更新了名称,(peripheral.name)这个参数并不会改变,所以需要换一种方式获取设备的名称,在广播数据包内有一个字段为kCBAdvDataLocalName,可以实时获取当前设备名称。
3.问题解决
下面给出OC和Swift的解决方法:
OC
-(void)centralManager:(CBCentralManager*)centraldidDiscoverPeripheral:(CBPeripheral*)peripheraladvertisementData:(NSDictionary*)advertisementDataRSSI:(NSNumber*)RSSI{ NSString*localName=[advertisementDataobjectForKey:@"kCBAdvDataLocalName"]; }
Swift
funccentralManager(_central:CBCentralManager,didDiscoverperipheral:CBPeripheral,advertisementData:[String:Any],rssiRSSI:NSNumber){ letlocalName=advertisementData["kCBAdvDataLocalName"] }
总结
到此这篇关于iOS蓝牙设备名称缓存问题的解决方法的文章就介绍到这了,更多相关iOS蓝牙设备名称缓存内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。