11 votes

Les services de localisation ne s'arrêtent pas lorsque l'application est fermée

Je développe actuellement une application iPhone qui nécessite des services de localisation pour diverses utilisations, y compris la RA.

J'ai tout testé sur simulateur et sur mon iPhone 3GS et tout s'est bien passé.

J'ai récemment testé sur iPhone4 et sur iPad2 et le service de localisation (la petite icône dans la barre d'état) continue à s'afficher même si je tue manuellement l'application ! La seule façon de désactiver cette icône est d'arrêter manuellement le service de localisation de mon application dans les paramètres.

Quelqu'un sait-il quelque chose à ce sujet ? Si nécessaire, je peux poster mon code.

Merci d'avance

Edit :

Lorsque je tue l'application, que je vais dans les services de localisation, que j'éteins mon application, l'icône de localisation disparaît. Mais quand je la rallume, elle réapparaît ! Est-ce normal ?

1voto

Ariel Points 1817

J'ai rencontré ce problème il y a quelque temps et j'ai trouvé utile de n'appliquer qu'une seule méthode de applicationDelegate objet

- (void)applicationWillEnterForeground:(UIApplication *)application;

Si vous arrêtez votre CLLocationManager de recevoir des mises à jour à l'intérieur de cet appel, vous serez bien. Bien sûr, vous devrez commencer à faire des mises à jour ailleurs, et - (void)applicationDidBecomeActive:(UIApplication *)application; sera un bon choix. Il convient également de noter qu'il existe deux méthodes de reconnaissance de la localisation

  • le gps basé -(void)start/stop_UpdatingLocation;

  • et le 3g/wi-fi basé -(void)start/stop_MonitoringSignificantLocationChanges;

1voto

user115271 Points 121

Voici la solution qui a réglé ce problème pour moi.

Arrêtez juste de surveiller les changements d'emplacement dans

- (void) applicationDidEnterBackground: (UIApplication *)application
{
    [locationManager stopMonitoringSignificantLocationChanges];
    locationManager.delegate = nil;
}

pas dans applicationWillEnterForeground: Pourtant, il faut quelques secondes pour que l'icône de localisation disparaisse.

Je ne sais pas pourquoi cela ne fonctionne pas dans la dernière méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X