Meine App ermittelt den Standort des Benutzers, ermittelt die Koordinaten und gibt eine Entfernung zu oder von seinem Ziel oder Ursprung an. Alle diese möglichen Ziele werden in einer Tabellenansicht angezeigt, sodass ich die Benutzerkoordinaten gleichzeitig mit dem Auffüllen der Tabelle erhalte. Das einzige ist, dass die Warnansicht, die nach dem Standort des Benutzers fragt, so schnell verschwindet, dass es unmöglich ist, darauf zu klicken!
Gibt es eine Möglichkeit, diese Warnung beim ersten Laden der App manuell anzuzeigen? Ich habe versucht, den Standort des Benutzers zu ermitteln, wenn die App geladen wird, um zu versuchen, die Anzeige der Warnung zu erzwingen, aber das hat nicht funktioniert.
quelle
Gleiches Symptom, andere Ursache: Nicht
startUpdatingLocation
mehr als einmal hintereinander anrufen .Ich hatte versehentlich Dinge so strukturiert, dass der Code ungewollt
startUpdatingLocation
zweimal hintereinander aufgerufen wurde, was anscheinend schlecht ist. Es könnte auch etwas mit der Auswahl der Warteschlange zu tun haben, da ich darauf gewartet habe, mit dem Update zu beginnen, bis das Ergebnis einer Netzwerkanforderung vorliegt, aber ich musste keine GCD-Magie ausführen, um das Problem zu beheben. Ich musste nur sicherstellen, dass ich es tat habe den Start nicht wiederholt.Hoffe, jemand kann von meinen Schmerzen profitieren. :) :)
quelle
Ich habe die ähnliche Situation konfrontiert. Nach dem Debuggen habe ich gefunden
wird in einem Methodenbereich aufgerufen, sollte jedoch global aufgerufen werden.
Warum?
Kurz gesagt, locationManager wurde freigegeben, nachdem die Methode zurückgegeben wurde. Es sollte jedoch erst freigegeben werden, wenn der Benutzer die Erlaubnis erteilt oder verweigert
quelle
Ich falle in das gleiche Problem (zumindest durch Symptome). In meinem Fall lag das Problem in der
- (void)applicationWillResignActive:(UIApplication *)application;
Methode, bei der ich meineCLLocationManager
Instanz als Teil der Vorbereitung auf den Hintergrundübergang freigab. Wenn ich es entfernt und nur im- (void)applicationDidEnterBackground:(UIApplication *)application;
Problem belassen habe , ist es weg.Der schwierige Teil ist, dass der Core Location-Alarm Ihre Anwendung aussetzt, während sie sich noch im Vordergrund befindet.
Hoffe, dass es dir helfen wird, ich habe viel Zeit gebraucht, um diesen Bastard zu gründen :)
quelle
Ich weiß, dass dies eine sehr späte Antwort ist. Aber es kann jemandem helfen. Ich hatte auch das gleiche Problem und verbrachte eine Stunde damit, das Problem zu identifizieren. Zuerst war mein Code so.
Jetzt verschwand der Standortalarm schnell. Wenn ich die letzte Zeile auskommentiere, funktioniert sie korrekt.
quelle
Ich bin auch auf dieses Problem gestoßen, aber die Lösung in meinem Fall stellte sich als völlig anders heraus als die akzeptierte Antwort.
In meiner app, ich rufe
stopUpdatingLocation
ausapplicationWillResignActive
. Dies war ein Problem, daapplicationWillResignActive
es aufgerufen wird, wenn der Berechtigungsdialog angezeigt wird. Dies wurdestopUpdatingLocation
unmittelbar danach verursachtstartUpdatingLocation
, weshalb der Dialog sofort verschwand.Die Lösung war einfach zu Anruf
stopUpdatingLocation
ausapplicationDidEnterBackground
statt.quelle
Dies passierte mir während der Verwendung des iOS-Simulators. Ich habe festgestellt, dass es aufgetreten ist, weil mein Laufschema einen Ort simuliert hat. Ich denke, dies hat den gleichen Effekt wie das Aufrufen
locationManager.startUpdatingLocation()
beim Start und so wurde der Dialog geschlossen.Das Deaktivieren des Kontrollkästchens "Standortsimulation zulassen" im Dialogfeld "Schemas bearbeiten" wurde behoben. Sobald es wie gewünscht funktioniert und die Berechtigung festgelegt ist, können Sie die Standortsimulation wieder aktivieren und der Simulator funktioniert von da an einwandfrei.
quelle
Swift 4 und iOS 11 :
Stellen Sie sicher, dass Sie Ihrer Datei Datenschutzzeilen hinzugefügt haben (sowohl immer als auch bei Verwendung ),
.plist
und fügen SieCoreLocation
Ihrem Projekt Framework hinzuDas Dialogfeld für die Standortberechtigung wird korrekt angezeigt, wenn ich Folgendes geändert habe:
mit:
PS .: Ich habe ALLE Ratschläge ausprobiert und alle schlagen fehl (Autorisierung anfordern
viewDidLoad
,var
anstattlet
für locationManager, nichtstartUpdatingLocation()
nach Anfrage zu starten. Ich denke, es ist ein Fehler und ich hoffe, dass sie ihn so schnell wie möglich beheben.quelle
Die SWIFT 4 @ Zoli-Lösung sieht folgendermaßen aus:
quelle
Sie definieren die locationManager-Variable am häufigsten als globales Objekt.
quelle
Ich habe die gleiche Situation von dir getroffen.
quelle