Błąd menedżera lokalizacji: (błąd KCLErrorDomain 0)


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

Dlaczego występuje ten błąd?


dobre pytanie - czasami widziałem ten sam błąd. Uważam, że dzieje się tak, gdy menedżer lokalizacji nie może uzyskać bieżącej lokalizacji - na przykład dlatego, że wystarczająco dobra poprawka nie jest dostępna. Ale widziałem go czasami po nie dostałem dobrą poprawkę, a potem na to wyskakuje błąd.
frankodwyer

1
Dla mnie było to, że zamiast kropki użyłem przecinka dla niestandardowego separatora dziesiętnego lokalizacji.
electronix384128

Miałem ten sam problem, ustaw dokładność na kCLLocationAccuracyBest lub jakąś dużą wartość, zignoruj ​​błąd i poczekaj na więcej aktualizacji.
zaheer

Odpowiedzi:


163

Ten błąd występuje, jeśli zaznaczyłeś, Scheme/Edit Scheme/Options/Allow Location Simulationale nie masz ustawionej domyślnej lokalizacji. Jestem pewien, że są też inne przyczyny.


1
Dzięki, ale moje pytanie brzmi, czy jeśli ustawimy domyślną lokalizację, to wpłynie to na aktualizację lokalizacji urządzenia?
sKhan

@ShafKhan Nie odpowiadaj na pytania w komentarzach. Zadaj to jako nowe pytanie.
Undistraction,

9
Jeśli zastanawiasz się, gdzie jest SCHEMAT, kliknij ten link developer.apple.com/library/mac/recipes/ ...
Bishal Ghimire

Nadal musiałem „Zresetować zawartość i ustawienia”, aby delegat wywołał didUpdate zamiast didFail po ustawieniu domyślnej lokalizacji w edytorze schematów. Wtedy zadziałało dobrze.
owenfi

To całkowicie rozwiązuje mój problem! Dziękuję Ci bardzo.
Ifelere Bolaji

42

AKTUALIZACJA

DZIĘKI Ben Martenowi Możesz uczynić go trwałym, wykonując następujące kroki w XCode:

  1. Produkt> Schemat> Edytuj schemat
  2. Kliknij opcję Uruchom aplikację
  3. Karta opcji
  4. Sprawdzono już lokalizację podstawową> wybierz swoją lokalizację
  5. wciśnij OK

Poza tym, nawet jeśli nie masz połączenia z Wi-Fi, możesz ustawić lokalizację w symulatorze za pomocą górnych pozycji menu Debug>Locationi aby stała się stała, wykonaj powyższe kroki

błąd lokalizacji w symulatorze ios


1
Aby to było trwałe, w Xcode: Produkt / Schemat / Edytuj schemat ... / Uruchom / Opcje / Lokalizacja rdzenia - zaznacz „Zezwalaj na symulację lokalizacji” i ustaw „Domyślną lokalizację” na „Brak”
electronix384128

1
Tak, to działa. Dziękuję bardzo 😃👍😄😃👌👏💃🙏💃💃. Edycja mojego pytania dla większej wiedzy :)
Vaibhav Saran

33

Właśnie miałem ten problem. Trochę zajęło mi znalezienie rozwiązania, które jest tylko luźno związane z odpowiedzią poprzedniego autora.

Lotnisko (Wi-Fi) musi być włączone, aby CoreLocation w symulatorze iPhone'a / iPada działał. Byłem podłączony przez Ethernet, więc CL nic nie zrobił w symulatorze. Włącz Lotnisko w ustawieniach sieci i spróbuj ponownie. Możesz zmienić kolejność interfejsów sieciowych, przeciągając Airport pod Ethernet, jeśli chcesz nadal faworyzować połączenie przewodowe nad bezprzewodowym ...


2
Mam ten błąd, a mój komputer jest podłączony do internetu przez WiFi. Ponadto, jeśli się nie mylę, Symulator nie rozpoznaje lokalizacji, używa zawsze lokalizacji Apple Office. Podczas korzystania z platformy MapKit wyświetlana jest niebieska kropka, więc lokalizacja jest ustawiona. To nie ma większego sensu.
Alex Angelico

1
Właśnie go włączyłem, nie jest to pierwsza na mojej liście sieci i wszystko zaczęło działać (Lion, XC 4.2)
David H

1
Miałem ten sam problem, ale nie na symulatorze, na urządzeniu! (iPhone 5S, iOS 8.1.3). Debugowałem aplikację za pomocą MapKit i CoreLocation i oba frameworki zwracały zawsze ten sam błąd. Dopóki nie włączyłem Wi-Fi! Dzięki :)
Vinzzz

13

Z dokumentacji API:

CLError

Kody błędów zwrócone przez obiekt menedżera lokalizacji.

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

Stałe

kCLErrorLocationUnknown Menedżer lokalizacji nie mógł w tej chwili uzyskać wartości lokalizacji. Dostępne w systemie iPhone OS 2.0 i nowszych. Zadeklarowano w CLError.h.

kCLErrorDenied Użytkownik odmówił dostępu do usługi lokalizacji. Dostępne w iPhone OS 2.0 i nowszych. Zadeklarowano w CLError.h.

kCLErrorNetwork Sieć była niedostępna lub wystąpił błąd sieci. Dostępne w iPhone OS 3.0b i nowszych. Zadeklarowano w CLError.h.

kCLErrorHeadingFailure Nie można określić nagłówka. Dostępne w iPhone OS 3.0 i nowszych. Zadeklarowano w CLError.h.

Oznacza to, że nie można określić lokalizacji.

Wydaje mi się, że najbardziej prawdopodobną przyczyną jest to, że menedżer lokalizacji używa Wi-Fi do triangulacji lokalizacji, a baza danych nie obejmuje sieci lokalnych. Najwyraźniej może to naprawić użytkownik, jeśli przejdzie tutaj .

Jednak, jak zauważyłem, od czasu do czasu widziałem to jako przejściowy błąd podczas uruchamiania programu opartego na lokalizacji w miejscu, w którym normalnie działa lokalizacja Wi-Fi.

Wreszcie, myślę, że można zobaczyć ten błąd, jeśli wystąpi jakaś awaria sprzętu.


4
Pyta o: KCLErrorDomain
electronix384128

W tej odpowiedzi nie ma odniesienia do kCLErrorDomain, czego szuka OP.
Norman H

5

1) sprawdź, czy faktycznie masz prawidłowe połączenie WiFi i 3G

jeśli to zrobisz

2) przejdź do ustawień i zresetuj usługi lokalizacyjne 3) zresetuj ustawienia sieciowe


Nadal nie rozumiem, dlaczego nie mogę uzyskać lokalizacji bez Wi-Fi lub 3G na iPadzie podczas testowania, dlaczego GPS nie jest używany? Więc użytkownik na urządzeniu nie może uzyskać lokalizacji bez internetu? Pracuję też nad aplikacją w trybie offline ...
Renetik

O ile wiem, GPS nie potrzebuje połączenia z Internetem ani Wi-Fi. Jest to tylko odbiornik, jeśli znajduje się w dostępnej lokalizacji z 2 lub 3 satelitami GPS, możemy uzyskać współrzędne geolokalizacji.Musimy się martwić o połączenie internetowe tylko wtedy, gdy Dane GeoInformation są potrzebne do wszelkich działań online, takich jak mapy Google, które są zależne od internetu, aby pokazać lokalizacje map, które nie są przechowywane lokalnie w pamięci podręcznej.Dedykowane aplikacje nawigacyjne, takie jak CoPilot, przechowują mapy na pokładzie.
Durai Amuthan.H

3

Ten błąd jest generowany, gdy Menedżer lokalizacji nie może natychmiast uzyskać informacji o lokalizacji. Okazało się, że ten błąd występował podczas wywołania metody startUpdatingLocation. U mnie działo się to na iPodzie, ale nie na iPhonie. Ma to sens, ponieważ iPhone ma więcej sposobów (takich jak sieć komórkowa), aby uzyskać informacje o lokalizacji i jest w stanie uzyskać szybkie oszacowanie lokalizacji, podczas gdy iPod zajmuje więcej czasu, co spowodowało zgłoszenie tego błędu na iPodzie.

Ponieważ w przypadku zgłaszania tego błędu metoda locationManager: didFailWithError: delegate jest wywoływana, można obsłużyć ten konkretny przypadek w instrukcji warunkowej, dopasowując „[domena błędów]” i „[kod błędu]” z obiektu błędu przekazanego do tej metody.


3

Dokładny powód, dla którego znalazłem, to konflikt występujący w symulacji lokalizacji zarówno w „Ustawieniach debugowania”, jak iw ustawieniach xcode „Edytuj schematy”. Upewnij się, że ustawiłeś domyślną lokalizację użytkownika w dowolnym z tych ustawień i zaznacz Drugi to None rozwiązał problem, mając nadzieję, że to na pewno pomoże. InXcode:wprowadź opis obrazu tutaj

W symulatorze iPhone'a / iPada:wprowadź opis obrazu tutaj


3

Jeśli masz to w emulatorze, wykonaj następujące czynności

Debug > Location >  Apple

instrukcja emulatora


1

Możesz dodać własną listę lokalizacji do Xcode, aby przetestować swoje aplikacje.

Z poziomu Xcode wybierz menu Debuguj / Symuluj lokalizację, a otrzymasz:

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

Wybierz „Dodaj plik GPX do projektu ...” i wybierz utworzony plik GPX.


0

Przejdź do projektu Xcode> produkt> schemat> edytuj schemat> sprawdź symulację lokalizacji> ustaw lokalizację> i ponownie uruchom aplikację. Mam nadzieję, że zadziała!


0

Dzięki temu artykułowi ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ) otrzymałem wskazówkę, aby spojrzeć na dane w moim niestandardowym pliku GPX i tam znalazłem problem.

Niektóre pliki GPX, które możesz pobrać z różnych źródeł, mogą zawierać następujące elementy wskazujące różne współrzędne w określonej ścieżce. To nie zadziała z symulacją lokalizacji Xcode.

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

To, co powinieneś zrobić, to znaleźć wszystkie wystąpienia elementu „trkpt” i zamienić je na „wpt” w swoim ulubionym edytorze text / xml. Końcowy wynik powinien wyglądać następująco:

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

Mam nadzieję że to pomoże! Z pewnością mi to pomogło.


0

Ten błąd występuje podczas uruchamiania programu, ale po uruchomieniu programu symulujesz lokalizację.

Dostaję metodę: wyjdź z symulatora i uruchom go ponownie, a następnie ustaw lokalizację symulatora przed uruchomieniem programu i działa dla mnie.

Mam nadzieję że to pomoże! Z pewnością mi to pomogło. dzięki...


0

to wszystko nie zadziałało dla mnie .. co zadziałało dla mnie to: - ustaw lokalizację z symulatora, aby nonenastępnie zmienić ją z powrotem na customlokalizację, gdy aplikacja jest uruchomiona.


0

Wszystkie sugestie nie pomogły w moim przypadku. Pomogło odinstalowanie aplikacji z urządzenia symulatora, ponowne jej zainstalowanie i zezwolenie na dostęp do lokalizacji (w aplikacji ustawień).


-1

Jeśli otrzymujesz to na urządzeniu, prawdopodobnie nie prosiłeś o lub użytkownik odmówił pozwolenia na zebranie lokalizacji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.