Location Manager-Fehler: (KCLErrorDomain-Fehler 0)

95
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)

Warum tritt dieser Fehler auf?

MQLN
quelle
Gute Frage - ich habe manchmal den gleichen Fehler gesehen. Ich glaube, es passiert, wenn der Standortmanager den aktuellen Standort nicht abruft - z. B. weil kein ausreichend guter Fix verfügbar ist. Aber habe ich es manchmal gesehen , nachdem es hat eine gute fix bekam, dann später auf diese Fehlermeldung erscheint.
Frankodwyer
1
Für mich war es so, dass ich ein Komma anstelle eines Punktes für das benutzerdefinierte Dezimaltrennzeichen verwendet hatte.
Electronix384128
Ich hatte das gleiche Problem, stellte die Genauigkeit auf kCLLocationAccuracyBest oder einen großen Wert ein, ignorierte den Fehler und wartete auf weitere Updates.
Zaheer

Antworten:

163

Dieser Fehler tritt auf, wenn Sie Scheme/Edit Scheme/Options/Allow Location Simulationüberprüft haben , aber keinen Standardspeicherort festgelegt haben. Ich bin mir sicher, dass es auch andere Ursachen gibt.

Ablenkung
quelle
1
Vielen Dank, aber meine Frage ist, ob der Standardspeicherort die Aktualisierung des Gerätestandorts beeinflusst.
sKhan
@ShafKhan Beantworte keine Fragen in den Kommentaren. Stellen Sie es als neue Frage.
Undistraction
9
Wenn Sie sich fragen, wo SCHEME ist, folgen Sie diesem Link developer.apple.com/library/mac/recipes/…
Bishal Ghimire
Ich musste immer noch "Inhalt und Einstellungen zurücksetzen", damit der Delegat didUpdate anstelle von didFail aufrief, nachdem er im Schema-Editor einen Standardspeicherort festgelegt hatte. Dann hat es gut funktioniert.
Owenfi
Das löst mein Problem total! Vielen Dank.
Ifelere Bolaji
42

AKTUALISIEREN

DANKE AN Ben Marten Mit den folgenden Schritten in XCode können Sie es dauerhaft machen:

  1. Produkt> Schema> Schema bearbeiten
  2. Klicken Sie auf .app ausführen
  3. Registerkarte Option
  4. Bereits aktiviert Kernstandort> Wählen Sie Ihren Standort aus
  5. drücke OK

Außerdem können Sie, selbst wenn Sie nicht mit WLAN verbunden sind, einen Ort im Simulator über die oberen Menüpunkte festlegen Debug>Locationund ihn dauerhaft ausführen, indem Sie die obigen Schritte ausführen

Standortfehler im iOS-Simulator

Vaibhav Saran
quelle
1
Um es dauerhaft zu machen, in Xcode: Produkt / Schema / Schema bearbeiten ... / Ausführen / Optionen / Kernspeicherort - Aktivieren Sie "Standortsimulation zulassen" und setzen Sie "Standardspeicherort" auf "Keine"
Electronix384128
1
Ja, es funktioniert. Vielen Dank 😃👍😄😃👌👏💃🙏💃💃. Bearbeiten meiner Frage für mehr Wissen :)
Vaibhav Saran
33

Ich hatte gerade dieses Problem. Ich habe eine Weile gebraucht, um die Lösung zu finden, die nur lose mit der Antwort des vorherigen Posters zusammenhängt.

Der Flughafen (WiFi) muss aktiviert sein, damit CoreLocation im iPhone / iPad-Simulator funktioniert. Ich war über Ethernet verbunden, sodass CL im Simulator nichts unternahm. Aktivieren Sie in Ihren Netzwerkeinstellungen den Flughafen und versuchen Sie es erneut. Sie können die Reihenfolge Ihrer Netzwerkschnittstellen ändern, indem Sie Airport unter Ethernet ziehen, wenn Sie weiterhin Ihre Kabelverbindung gegenüber Ihrer ...

Meltemi
quelle
2
Ich habe diesen Fehler und mein Computer ist über WLAN mit dem Internet verbunden. Wenn ich mich nicht irre, löst der Simulator den Speicherort nicht auf und verwendet immer den Apple Office-Speicherort. Bei Verwendung des MapKit-Frameworks wird der blaue Punkt angezeigt, sodass der Speicherort festgelegt wird. Es macht nicht viel Sinn.
Alex Angelico
1
Ich habe es gerade eingeschaltet, es ist nicht das erste in meiner Netzwerkliste, und alles begann zu funktionieren (Lion, XC 4.2)
David H
1
Ich hatte das gleiche Problem, aber nicht auf dem Simulator, auf dem Gerät! (iPhone 5S, iOS 8.1.3). Ich habe eine Anwendung mit MapKit & CoreLocation debuggt und beide Frameworks haben immer den gleichen Fehler zurückgegeben. Bis ich das Wifi eingeschaltet habe! Danke :)
Vinzzz
13

Aus den API-Dokumenten:

CLError

Vom Standortmanagerobjekt zurückgegebene Fehlercodes.

typedef enum {kCLErrorLocationUnknown = 0, kCLErrorDenied, kCLErrorNetwork, kCLErrorHeadingFailure} CLError;

Konstanten

kCLErrorLocationUnknown Der Standortmanager konnte derzeit keinen Standortwert abrufen. Verfügbar in iPhone OS 2.0 und höher. In CLError.h deklariert.

kCLErrorDenied Der Zugriff auf den Standortdienst wurde vom Benutzer verweigert. Verfügbar in iPhone OS 2.0 und höher. In CLError.h deklariert.

kCLErrorNetwork Das Netzwerk war nicht verfügbar oder ein Netzwerkfehler ist aufgetreten. Verfügbar in iPhone OS 3.0b und höher. In CLError.h deklariert.

kCLErrorHeadingFailure Die Überschrift konnte nicht ermittelt werden. Verfügbar in iPhone OS 3.0 und höher. In CLError.h deklariert.

Dies bedeutet, dass der Standort nicht bestimmt werden konnte.

Ich würde vermuten, dass die wahrscheinlichste Ursache darin besteht, dass der Standortmanager WLAN verwendet, um den Standort zu triangulieren, und die Datenbank die lokalen Netzwerke nicht abdeckt. Das kann der Benutzer anscheinend beheben, wenn er hierher kommt .

Wie ich jedoch bemerkt habe, habe ich dies gelegentlich auch als vorübergehenden Fehler gesehen, wenn ein standortbasiertes Programm an einem Ort ausgeführt wird, an dem das WiFi-Standortmaterial normalerweise funktioniert.

Schließlich denke ich, dass es möglich ist, diesen Fehler zu sehen, wenn es einen Hardwarefehler gibt.

frankodwyer
quelle
4
Er fragt nach: KCLErrorDomain
Electronix384128
In dieser Antwort gibt es keinen Verweis auf kCLErrorDomain, nach dem das OP sucht.
Norman H
5

1) Überprüfen Sie, ob Sie tatsächlich eine gültige WLAN- und 3G-Verbindung haben

wenn du es dann tust

2) Gehen Sie zu Einstellungen und setzen Sie Ihre Standortdienste zurück. 3) Setzen Sie Ihre Netzwerkeinstellungen zurück

MeM
quelle
Ich verstehe immer noch nicht, warum ich beim Testen keinen Standort ohne WLAN oder 3G auf dem iPad erhalten kann. Warum wird GPS nicht verwendet? Benutzer auf dem Gerät können also keinen Standort ohne Internet finden? Ich arbeite auch an der Offline-Modus-App ...
Renetik
Soweit ich weiß, benötigt GPS weder eine Internet- noch eine WLAN-Verbindung. Es ist nur ein Empfänger, wenn es sich an einem zugänglichen Ort mit 2 oder 3 GPS-Satelliten befindet. Wir können die Geostandortkoordinaten abrufen. Wir müssen uns nur um die Internetverbindung kümmern, wenn Die GeoInformation wird für alle Online-Aktivitäten wie Google Maps benötigt, die vom Internet abhängig sind, um Kartenstandorte anzuzeigen, die nicht lokal zwischengespeichert sind. Spezielle Navigationsanwendungen wie CoPilot behalten die Karten an Bord.
Durai Amuthan.H
3

Dieser Fehler wird ausgelöst, wenn der Standortmanager Standortinformationen nicht sofort abrufen kann. Ich habe festgestellt, dass dieser Fehler beim Aufruf der Methode startUpdatingLocation auftrat. Für mich geschah dies auf dem iPod, aber nicht auf dem iPhone. Dies ist sinnvoll, da das iPhone über mehr Möglichkeiten (wie ein Mobilfunknetz) verfügt, um Standortinformationen abzurufen, und eine schnelle Schätzung des Standorts erhalten kann, während der iPod mehr Zeit benötigt, wodurch dieser Fehler auf dem iPod ausgelöst wurde.

Da beim Auslösen dieses Fehlers die Methode locationManager: didFailWithError: delegate aufgerufen wird, kann dieser spezielle Fall in einer bedingten Anweisung behandelt werden, indem "[Fehlerdomäne]" und "[Fehlercode]" aus dem an diese Methode übergebenen Fehlerobjekt abgeglichen werden.

Vishal Chaudhry
quelle
3

Der genaue Grund, den ich gefunden habe, ist, dass in der Standortsimulation sowohl im iOS-Simulator "Debug-Einstellungen" als auch in den Xcode-Einstellungen "Schemata bearbeiten" ein Konflikt auftritt. Stellen Sie sicher, dass Sie den Standard-Benutzerstandort in einem dieser Bereiche festlegen und markieren der andere zu keiner löste das Problem hoffentlich dies könnte sicher helfen. InXcode:Geben Sie hier die Bildbeschreibung ein

Im iPhone / iPad-Simulator:Geben Sie hier die Bildbeschreibung ein

Super Xtreem
quelle
3

Wenn Sie dies in Emulator haben, gehen Sie wie folgt vor

Debug > Location >  Apple

Emulator-Anweisung

Hitesh Chavda
quelle
1

Sie können Xcode eine eigene Liste von Speicherorten hinzufügen, mit denen Sie Ihre Anwendungen testen können.

Wählen Sie in Xcode das Menü Debug / Simulate Location und Sie erhalten Folgendes:

a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."

Wählen Sie "GPX-Datei zum Projekt hinzufügen ..." und wählen Sie die von Ihnen erstellte GPX-Datei aus.

Carl
quelle
0

Gehen Sie zu Xcode-Projekt> Produkt> Schema> Schema bearbeiten> Suche nach Standortsimulation> Legen Sie Ihren Standort fest> und führen Sie die App erneut aus. Hoffe, es wird funktionieren!

Janisar
quelle
0

Dank dieses Artikels ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ) erhielt ich einen Hinweis zum Anzeigen der Daten in meiner benutzerdefinierten GPX-Datei und fand dort das Problem.

Einige GPX-Dateien, die Sie möglicherweise aus verschiedenen Quellen erhalten, enthalten möglicherweise die folgenden Elemente, die die unterschiedlichen Koordinaten im angegebenen Pfad angeben. Dies funktioniert nicht mit der Standortsimulation von Xcode.

<gpx>
...
<trkpt lat="" lon="">
<ele></ele>
</trkpt>
...
</gpx>

Was Sie tun sollten, ist, alle Vorkommen des Elements "trkpt" zu finden und es in Ihrem bevorzugten Text- / XML-Editor durch "wpt" zu ersetzen. Das Endergebnis sollte wie folgt aussehen:

<gpx>
<wpt lat="" lon="">
<ele></ele>
</wpt>
...
</gpx>

Hoffe das hilft! Es hat mir sicherlich geholfen.

Nino
quelle
0

Dieser Fehler tritt auf, während Sie Ihr Programm ausführen, aber Sie simulieren den Speicherort, nachdem Sie das Programm ausgeführt haben.

Ich erhalte eine Methode: Beenden Sie Ihren Simulator und starten Sie ihn neu. Legen Sie dann Ihren Simulator-Speicherort fest, bevor Sie das Programm ausführen, und es funktioniert für mich.

Hoffe das hilft! Es hat mir sicherlich geholfen. Vielen Dank...

Matiji66
quelle
0

All dies hat bei mir nicht funktioniert. Was bei mir funktioniert hat, ist: - Stellen Sie den Speicherort im Simulator ein, noneum ihn dann wieder in den customSpeicherort zu ändern, während die App ausgeführt wird.

DeyaEldeen
quelle
0

Alle Vorschläge haben in meinem Fall nicht geholfen. Was half, war die Deinstallation der App vom Simulatorgerät, die Neuinstallation und der Zugriff auf den Speicherort (in der Einstellungs-App).

Niklas D.
quelle
-1

Wenn Sie dies auf dem Gerät erhalten, haben Sie wahrscheinlich nicht danach gefragt oder der Benutzer hat die Berechtigung zum Sammeln des Speicherorts verweigert.

DrMickeyLauer
quelle