Core Bluetooth Preservação e Restauração do Estado Não Funciona, Não é Possível Liberar o Aplicativo em Segundo Plano

Estou tentando fazer com que o core bluetooth acorde o aplicativo mesmo quando ele não está em execução.

Como a Apple declarou: "Como a preservação e a restauração do estado são incorporadas ao Core Bluetooth, seu aplicativo pode optar por esse recurso para pedir ao sistema que preserve o estado dos gerentes centrais e periféricos do seu aplicativo e continue a executar determinadas tarefas relacionadas ao Bluetooth Em seu nome, mesmo quando seu aplicativo não está mais em execução. Quando uma dessas tarefas é concluída, o sistema reinicia seu aplicativo em segundo plano e dá ao seu aplicativo a oportunidade de restaurar seu estado e manipular o evento adequadamente. "

Eu adicionei o código a seguir para ativar esse recurso:

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

Mas os retornos de chamada quando o aplicativo é ativado nunca foram acionados.

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

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

Esses dois nunca são chamados.

A maneira como estou testando essa função de ativação:

Eu adiciono "bluetooth central" no modo background em info.plist, então o BLE é executado em segundo plano.

inicie o centralManager no meu iphone No.1. inicia escaneamento.

pressione home e saia, jogue algum jogo pesado de memória, no log de depuração eu verei: "Terminado devido à pressão da memória. Processo finalizado com o código de saída 0". Isso é para simular como o sistema ios encerra o aplicativo de segundo plano devido à pressão da memória.

inicie um beacon com outro iphone No.2 e inicie a transmissão.

Resultado: aqueles callbacks de relançamento nunca são chamados.

Alguma idéia porque isso não está funcionando? Se é um problema de API, existe alguma outra abordagem para relançar seu aplicativo em segundo plano com o BLE quando o smartphone chega perto do BLE? Eu tentei usar o ibeacon para ativar o aplicativo, mas o principal gerenciador central do bluetooth não permitirá que você se conecte ao ibeacon em segundo plano.

Obrigado!

questionAnswers(3)

yourAnswerToTheQuestion