Estou procurando uma maneira de obter uma atualização de localização em segundo plano a cada n minutos no meu aplicativo iOS. Estou usando o iOS 4.3 e a solução deve funcionar em iPhones sem jailbreak.
Tentei / considerei as seguintes opções:
CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges
: Isso funciona em segundo plano conforme o esperado, com base nas propriedades configuradas, mas não parece possível forçá-lo a atualizar o local a cada n minutosNSTimer
: Funciona quando o aplicativo está sendo executado em primeiro plano, mas não parece ter sido projetado para tarefas em segundo plano- Notificações locais: as notificações locais podem ser agendadas a cada n minutos, mas não é possível executar algum código para obter a localização atual (sem que o usuário precise iniciar o aplicativo por meio da notificação). Essa abordagem também não parece ser uma abordagem limpa, pois não é para isso que as notificações devem ser usadas.
UIApplication:beginBackgroundTaskWithExpirationHandler
: Pelo que entendi, isso deve ser usado para concluir algum trabalho em segundo plano (também com tempo limitado) quando um aplicativo é movido para o segundo plano, em vez de implementar processos em segundo plano "de longa execução".
Como posso implementar essas atualizações regulares de localização em segundo plano?