我当前使用的是iOS 7。在扫描时检索到的BLE外设名称似乎是基于地址进行缓存的。即使将BLE设备名称刷新为新值,在iOS 7的外设发现 [myCentralManager scanForPeripheralsWithServices:nil options:nil];
期间,我仍然会得到旧的设备名称。
- 有没有编程方式清除BLE设备缓存?
- 即使手动刷新,也似乎不可能。在“设置”->“蓝牙”下,BLE设备似乎从未列出,尽管可以通过编程方式扫描和连接。(按照这里的说明here)为什么会这样?
我当前使用的是iOS 7。在扫描时检索到的BLE外设名称似乎是基于地址进行缓存的。即使将BLE设备名称刷新为新值,在iOS 7的外设发现 [myCentralManager scanForPeripheralsWithServices:nil options:nil];
期间,我仍然会得到旧的设备名称。
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI {
NSString * gapName = peripheral.name;
NSString * identityName = [advertisementData objectForKey:CBAdvertisementDataLocalNameKey];
}
使用[advertisementData objectForKey:CBAdvertisementDataLocalNameKey]获取外围设备名称比peripheral.name更加精确,因为peripheral.name获取GAP名称,而[advertisementData objectForKey:CBAdvertisementDataLocalNameKey]获取的是更新后的名称。