@iOS 12 encerra os aplicativos em segundo plano sem motivo

A partir do iOS 12, o CLLocationManager não funciona mais sem fim em segundo plano. O aplicativo é finalizado sem um crashlog em momentos aleatórios. Isso estava funcionando bem antes do iOS 12.

Para demonstrar esse problema, criei um aplicativo de exemploAqu

O aplicativo demo apenas lança um CLLocationManager e mantém isso em execução em segundo plano. Durante a execução em segundo plano, mantemos o controle registrando-o. O problema é que o aplicativo é encerrado pelo iOS. O aplicativo de demonstração é criado para demonstrar esse problema.

Passos para reproduzi

Execute o aplicativo no dispositivoGrande acesso ao gerente de localização Coloque o aplicativo em segundo planoEspere por 1-48 horas

Resultado

O aplicativo é encerrado

@App é encerrado sem motivo por motivo aleatóri

Resultado esperado

O aplicativo ainda está sendo executado.

Como deve funcionar

Isso é confirmado por um engenheiro da Apple:

Uma vez que as atualizações do CLLocationManager são iniciadas em primeiro plano e você fez todo o trabalho para executá-lo em segundo plano, as atualizações de local devem ser executadas sem fim em segundo plano até:

app é forçar o encerramentodevice é reiniciadoapp interrompe as atualizações de localizaçãoapp libera o objeto CLLocationManagerapp crashes @iOS encerra o aplicativo devido à falta de memória, objeto locationManager é liberado, liberado ou sobrescrito. Você deve se certificar de que seu controlador de exibição não esteja sendo instanciado, o que redefine a classe locationController. Se isso acontecer quando o aplicativo estiver em segundo plano, você reiniciará as atualizações, o que fará com que o aplicativo seja eventualmente suspenso. Você deve garantir que o locationController seja um singleton.app está falhando. Verifique se há logs de falha no dispositivo que você está testando @iOS está encerrando o aplicativo devido à falta de memória. Nesse caso, você encontrará os logs do JetsamEvent no dispositivo que mostra seu aplicativo sendo encerrado. Você pode verificar os carimbos de data e hora e localizar o que fica mais ou menos na hora em que seu aplicativo parou de funcionar.

questionAnswers(2)

yourAnswerToTheQuestion