Ich habe eine kleine App erstellt, die Ortungsdienste auf dem iPhone verwendet. Alles funktioniert gut, abgesehen davon, dass manchmal der kleine Pfeil in der Info-Leiste aktiv bleibt, auch wenn ich die App explizit abtöte.
Ich benutze den Hintergrundmodus für locationservices, daher sind die appDelegate-Methoden applicationWillResignActive
, applicationDidEnterBackground
, applicationWillEnterForeground
und applicationDidBecomeActive
implementiert, aber nicht die Ortungsdienste (naja, ich brauche sie im Hintergrundmodus).
In dieser Konfiguration wird applicationWillTerminate
niemals aufgerufen. Ich habe die Aufräumarbeiten als stopUpdatingLocation
in dealloc
implementiert, da ich keinen anderen geeigneten Ort gefunden habe. Aber immer noch - der Indikator bleibt an.
Irgendwelche Ideen?
Ich hatte das gleiche Problem - App ließ die Standortanzeige in der Statusleiste an.
Mein Problem stellte sich heraus, dass ich ursprünglich die Methode 'startMonitoringSignificantLocationChanges' von CCLocationManager gewählt hatte, die grobe Standortinformationen lieferte, mit denen ich die Auflösung verbessern konnte, als ich sie wirklich brauchte.
Leider, sobald eine App diese Methode einmal aufgerufen hat, auch wenn Sie die App dann löschen und erneut installieren, wird das Symbol in der Statusleiste immer wieder angezeigt, bis die App 'stopMonitoringSignificantLocationChanges' in CCLocationManager aufruft, um sich selbst abzumelden Das System - völliger Schmerz, da ich diesen Code so lange einbehalten muss, bis er sich bei den Leuten, die meine App für mich getestet haben, aussortiert hat.
Wenn Sie also sicherstellen, dass dieses Symbol in Ihrer App aktiviert ist, stellen Sie sicher, dass Sie alle Aufrufe von "startMonitoringSignificantLocationChanges" mit einem Stoppanruf abgeglichen haben.
Wenn Sie Ihren Standortmanager-Job mit
gestartet haben %Vor%dann müssen Sie es mit stoppen:
%Vor%Wenn Sie die Beendigung der Anwendung erzwingen, wird applicationWillTerminate nicht aufgerufen, da sie aus Sicht des Betriebssystems als SIGKILL angezeigt wird.
Ich habe ein ähnliches Problem gefunden. Das Problem tritt nur auf dem iPhone4 auf, funktioniert aber perfekt auf meinem 3GS. Nachdem ich meinen Code angeschaut habe, habe ich festgestellt, dass ich in meiner startUpdatingLocation-Methode die Dienste startUpdatingLocation und startMonitoringForRegion verwendet habe, aber in meiner Methode stopUpdatingLocation höre ich einfach auf, denLocation-Dienst zu aktualisieren. Ich habe dieses Problem behoben, indem ich MonitoringForRegion ebenfalls deaktiviert habe.
%Vor%Tags und Links iphone ios4 cllocationmanager dealloc