Resumen de los problemas de almacenamiento en caché de nombres de dispositivos Bluetooth iOS

1. Antecedentes del problema

  1. Cuando el dispositivo se ha conectado correctamente en la aplicación
  2. Modificar el nombre del dispositivo
  3. El nombre del dispositivo escaneado por la aplicación sigue siendo el nombre anterior
  4. La forma de obtener el nombre en el código de la aplicación es (perpheral.name)

2. Análisis de problemas

Cuando la APLICACIÓN es el centro para conectarse a otros dispositivos Bluetooth.

Después de que la primera conexión sea exitosa, la caché de periféricos se registrará en el sistema iOS.

La próxima vez que vuelva a buscar, cuando busque el dispositivo Bluetooth, imprimirá directamente (periférico.nombre) y obtendrá el nombre de Bluetooth en la memoria caché anterior.

Si el dispositivo Bluetooth actualiza el nombre durante este período, el parámetro (periférico.nombre) no cambiará, por lo que debe obtener el nombre del dispositivo de otra manera. Hay un campo en el paquete de datos de transmisión llamado kCBAdvDataLocalName, que puede obtener el nombre del dispositivo actual en tiempo real.

3. Resolución de problemas

Las soluciones para OC y Swift se dan a continuación:

jefe

-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI{
        NSString *localName = [advertisementData objectForKey:@"kCBAdvDataLocalName"];
} 

Rápido

func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
        let localName = advertisementData["kCBAdvDataLocalName"]
}

Supongo que te gusta

Origin blog.csdn.net/qq_36478920/article/details/108265837
Recomendado
Clasificación