Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Dlaczego występuje ten błąd?
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
Dlaczego występuje ten błąd?
Odpowiedzi:
Ten błąd występuje, jeśli zaznaczyłeś, Scheme/Edit Scheme/Options/Allow Location Simulation
ale nie masz ustawionej domyślnej lokalizacji. Jestem pewien, że są też inne przyczyny.
AKTUALIZACJA
DZIĘKI Ben Martenowi Możesz uczynić go trwałym, wykonując następujące kroki w XCode:
- Produkt> Schemat> Edytuj schemat
- Kliknij opcję Uruchom aplikację
- Karta opcji
- Sprawdzono już lokalizację podstawową> wybierz swoją lokalizację
- 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>Location
i aby stała się stała, wykonaj powyższe kroki
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 ...
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.
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
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.
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:
W symulatorze iPhone'a / iPada:
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.
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.
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...
to wszystko nie zadziałało dla mnie .. co zadziałało dla mnie to: - ustaw lokalizację z symulatora, aby none
następnie zmienić ją z powrotem na custom
lokalizację, gdy aplikacja jest uruchomiona.
Jeśli otrzymujesz to na urządzeniu, prawdopodobnie nie prosiłeś o lub użytkownik odmówił pozwolenia na zebranie lokalizacji.