La restauración y restauración del estado del núcleo Bluetooth no funciona, no puedo reiniciar la aplicación en segundo plano

Estoy tratando de hacer que el núcleo bluetooth active la aplicación incluso cuando no está funcionando.

Como dijo Apple, "Debido a que la preservación y restauración del estado está integrada en Core Bluetooth, su aplicación puede optar por esta función para pedirle al sistema que mantenga el estado de los administradores central y periférico de su aplicación y que continúe realizando ciertas tareas relacionadas con Bluetooth en en su nombre, incluso cuando la aplicación ya no se ejecuta. Cuando una de estas tareas finaliza, el sistema vuelve a iniciar la aplicación en segundo plano y le da la oportunidad de restaurar su estado y manejar el evento de manera adecuada ".

Agregué el siguiente código para optar a esta función:

 myCentralManager =
        [[CBCentralManager alloc] initWithDelegate:self queue:nil
         options:@{ CBCentralManagerOptionRestoreIdentifierKey:
         @"myCentralManagerIdentifier" }];

Pero las devoluciones de llamada cuando la aplicación se activó nunca se activaron.

-(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
}

-(void)centralManager:(CBCentralManager *)central
      willRestoreState:(NSDictionary *)state {
}

Estos dos nunca son llamados.

La forma en que estoy probando esta función de despertador:

Agrego "bluetooth central" en modo de fondo en info.plist, por lo que el BLE se ejecuta en segundo plano.

iniciar centralManager en mi iphone No.1. iniciar escaneo.

presione Inicio y salga, juegue un juego pesado de memoria, en el registro de depuración veré: "Terminado debido a la presión de la memoria. El proceso terminó con el código de salida 0". Esto es para simular cómo el sistema ios termina la aplicación en segundo plano debido a la presión de la memoria.

iniciar una baliza con otro iphone No.2 y comenzar a transmitir.

resultado: esos reenvíos de llamada nunca se vuelven a llamar.

¿Alguna idea de por qué esto no está funcionando? Si se trata de un problema de API, ¿existe algún otro enfoque para relanzar su aplicación en segundo plano con BLE cuando su teléfono se acerca a la baliza BLE? He intentado usar ibeacon para activar la aplicación, pero el administrador central de bluetooth no te permite conectarte a ibeacon en segundo plano.

¡Gracias!

Respuestas a la pregunta(3)

Su respuesta a la pregunta