最近做一个BLE相关的项目,遇到一个问题。
现象:
当一个外设(peripheral)已经与iPhone连接成功后,如果修改外设的名称,iPhone重新扫描外设后获得的仍然是之前的名称。打印的perpheral.name依然是以前的值。
解决方法:
首次连接成功过后,iOS系统内会将改外设缓存记录下来,下次重新搜索时,搜索到的蓝牙外设时,直接打印peripheral.name,得到的是之前缓存中的蓝牙名称,如果此期间蓝牙外设有更新蓝牙名称的话,这个参数并不会改变,所以需要换一种方式获取蓝牙外设的名称,广播数据包内就有一个字段kCBAdvDataLocalName,可以从中获取。
代码:
-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral: