2017-02-22 1 views
0

J'ai essayé d'utiliser un changement de position significatif lorsque l'application est totalement fermée, mais cela ne donne pas les résultats escomptés.iOS Détection de changement de position significative lorsque l'application est fermée

Mon application est censée détecter quand un voyage est démarré en voiture. Pour cela, je m'inscris pour un suivi important des changements de localisation, donc l'application devrait être lancée par iOS une fois qu'un changement significatif a lieu.

Sur simulateur, je simule une conduite sur route, et cela fonctionne totalement bien. Cependant, sur de vrais appareils, l'application est lancée après un déplacement de 5 à 10 km à très grande vitesse.

J'ai trouvé en magasin d'autres applications qui réussissent à effectuer cela, donc je me demande quelle partie de mon implémentation est incorrecte.

J'ai activé le mode d'arrière-plan de localisation à info plist. Voici le code que j'utilise pour lancer des mises à jour de localisation significatives:

self.significantLocationManager = [[CLLocationManager alloc] init]; 
self.significantLocationManager.delegate = self; 
if ([self.significantLocationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) { 
    self.significantLocationManager.allowsBackgroundLocationUpdates = YES; 
} 
[self.significantLocationManager startMonitoringSignificantLocationChanges]; 

EDIT: Je l'ai déjà demandé et donné mon autorisation d'application « Toujours » utiliser les services de localisation. L'application utilise déjà l'emplacement en avant-plan, en arrière-plan et tout en étant terminé (mais il faut BEAUCOUP de temps pour lancer à partir de l'état terminé).

Répondre

1

vous devez demander la permission Toujours pour exécuter votre application en arrière-plan. L'application se réveillera si l'emplacement significatif est modifié même si votre application est supprimée. À ce moment, vous ne pouvez pas modifier un composant de l'interface utilisateur (c'est-à-dire changer le texte de l'étiquette, etc.). Sinon, votre code est correct.

+0

C'est déjà le cas. J'ai mis à jour la question. Merci. –