CLBeaconRegion, cómo desactivar la advertencia: active Bluetooth para permitir * para conectarse a los accesorios

Tenemos un proyecto que utiliza las regiones de CoreLocation para monitorear la input / salida de la región iBeacon en el background de la aplicación. CLBeaconRegion (CLRegion), CLBeacon, etc. CLLocationManager devuelve devoluciones de llamada cuando se ingresa una región CLBeacon (iBeacon). Es una envoltura ligera alnetworkingedor de un bluetoothManager debajo.

// various CLLocation delegate callback examples - (void) locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region; - (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region; 

El problema que tenemos es que cuando un usuario no tiene activado Bluetooth, el Iphone emite una advertencia de nivel de sistema de manera regular para 'Activar Bluetooth para permitir' 'APP_NAME' 'para conectar los accesorios' '. Esto sucede mucho, ya lo tengo 4 veces esta mañana ya que la aplicación se ejecuta en segundo plano. CLLocationManager puede estar intentando monitorear esos CLBeaconRegion, pero el bluetooth está apagado por lo que no puede hacer esto.

Otra publicación, menciona que CBCentralManager tiene una propiedad, CBCentralManagerOptionShowPowerAlertKey, que permite deshabilitar esta advertencia.

iOS CoreBluetooth comtesting pasivamente si Bluetooth está habilitado sin preguntar al usuario que encienda Bluetooth

Desafortunadamente, no he encontrado ninguna manera de acceder a Bluetooth subyacente, o cualquier reference de CBCentralManager para usar esto.

¿Hay alguna manera de desactivar esta advertencia para la monitorización CLBeaconRegion?

introduzca la descripción de la imagen aquí

Desarrollé una solución que utiliza CoreBluetooth y CBCentralManager para detectar, detener e iniciar el uso del bluetooth. A continuación se muestra la mayoría del código, más una verificación inicial para ver si está activada antes de comenzar. Funciona para suprimir el post de error al garantizar que las balizas no se están utilizando cuando el bluetooth está apagado. Si está deshabilitado, las balizas se detienen. La advertencia así desaparece. En realidad, no podemos habilitar / deshabilitar bluetooth mediante progtwigción por desgracia.

 // initialize in viewdidLoad, etc _bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{CBCentralManagerOptionShowPowerAlertKey:@NO}]; // bluetooth manager state change - (void)centralManagerDidUpdateState:(CBCentralManager *)central { NSString *stateString = nil; switch(central.state) { case CBCentralManagerStateResetting: stateString = @"The connection with the system service was momentarily lost, update imminent."; break; case CBCentralManagerStateUnsupported: stateString = @"The platform doesn't support Bluetooth Low Energy."; break; case CBCentralManagerStateUnauthorized: stateString = @"The app is not authorized to use Bluetooth Low Energy."; break; case CBCentralManagerStatePowenetworkingOff: stateString = @"Bluetooth is currently powenetworking off."; break; case CBCentralManagerStatePowenetworkingOn: stateString = @"Bluetooth is currently powenetworking on and available to use."; break; default: stateString = @"State unknown, update imminent."; break; } if(_bluetoothState != CBCentralManagerStateUnknown && _bluetoothState != CBCentralManagerStatePowenetworkingOn && central.state == CBCentralManagerStatePowenetworkingOn){ NSLog(@"BEACON_MANAGER: Bluetooth just enabled. Attempting to start beacon monitoring."); _forceRestartLM = YES; // make sure we force restart LMs on next update, since they're stopped currently and regions may not be updated to trigger it [self startBeaconMonitoring]; } if(_bluetoothState != CBCentralManagerStateUnknown && _bluetoothState == CBCentralManagerStatePowenetworkingOn && central.state != CBCentralManagerStatePowenetworkingOn) { NSLog(@"BEACON_MANAGER: Bluetooth just disabled. Attempting to stop beacon monitoring."); [self stopBeaconMonitoring]; } } 
    Intereting Posts