Je cherche un moyen d'obtenir une mise à jour de l'emplacement en arrière-plan toutes les n minutes dans mon application iOS. J'utilise iOS 4.3 et la solution devrait fonctionner pour les iPhones non jailbreakés.
J'ai essayé / envisagé les options suivantes:
CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges
: Cela fonctionne en arrière-plan comme prévu, en fonction des propriétés configurées, mais il ne semble pas possible de le forcer à mettre à jour l'emplacement toutes les n minutesNSTimer
: Fonctionne lorsque l'application s'exécute au premier plan, mais ne semble pas être conçue pour les tâches en arrière-plan- Notifications locales: les notifications locales peuvent être planifiées toutes les n minutes, mais il n'est pas possible d'exécuter du code pour obtenir l'emplacement actuel (sans que l'utilisateur n'ait à lancer l'application via la notification). Cette approche ne semble pas non plus être une approche propre, car ce n'est pas pour cela que les notifications doivent être utilisées.
UIApplication:beginBackgroundTaskWithExpirationHandler
: D'après ce que je comprends, cela devrait être utilisé pour terminer certains travaux en arrière-plan (également limités dans le temps) lorsqu'une application est déplacée en arrière-plan plutôt que de mettre en œuvre des processus d'arrière-plan "de longue durée".
Comment puis-je implémenter ces mises à jour régulières de l'emplacement en arrière-plan?