didFailWithError: Error Domain = kCLErrorDomain Code = 0 „Nie można ukończyć operacji. (błąd kCLErrorDomain 0.) ”


82

Chcę uzyskać bieżącą lokalizację, ale zamiast tego pojawia się błąd.

To jest fragment mojego kontrolera widoku.

- (void)viewDidLoad {
    self.locationManager = [[CLLocationManager alloc] init];
    [locationManager setDelegate:self];
    [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters];
    [locationManager startUpdatingLocation];
}

- (void)locationManager:(CLLocationManager *)manager 
     didUpdateLocations:(NSArray<CLLocation *> *)locations {
    // I would get the latest location here
    // but this method never gets called
}
- (void)locationManager:(CLLocationManager *)manager 
       didFailWithError:(NSError *)error {
    NSLog(@"didFailWithError: %@", error);
}

Oczekuję, że metoda delegata locationManager:didUpdateLocations:zostanie wywołana, ale zamiast tego locationManager:didFailWithError:jest wywoływana i drukuje to:

didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 

Alternatywnie możesz użyć interfejsu API Google. Zapoznaj się z moją odpowiedzią tutaj stackoverflow.com/a/40670608/2033377
Deepak Thakur

symulator goto -> funkcje -> lokalizacja -> Apple. jeśli masz to ustawione noneto nie zadziała i wyrzuci ten błąd., zrobiłem to przypadkiem
Maddocks

Odpowiedzi:


106
  1. Sprawdź, czy faktycznie masz prawidłowe połączenie WiFi i 3G

    ... jeśli tak, to:

  2. Przejdź do ustawień i zresetuj usługi lokalizacyjne

  3. Zresetuj ustawienia sieciowe

To powinno rozwiązać ten problem. Jest to związane z urządzeniem / siecią, a nie aplikacją. Jest to denerwujące, zwłaszcza jeśli Twoja aplikacja jest zależna od usług lokalizacyjnych, a urządzenie obsługuje tylko Wi-Fi, a ludzie wystawiają negatywne oceny w AppStore ... Przepraszam, robię się tam trochę emocjonalnie.


2
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 lokalizacji geograficznej. Dlaczego więc pojawia się błąd, jeśli jest brak połączenia z Internetem lub Wi-Fi?
Durai Amuthan, H,

2
Jeden głos za wskazaniem resetowania usług lokalizacyjnych i ustawień sieciowych
Durai Amuthan.H

3
Nie powinieneś wykonywać tych czynności. Po prostu zignoruj ​​ten błąd i poczekaj na więcej aktualizacji. Zobacz moją odpowiedź poniżej lub przejrzyj dokumenty pod adresem developer.apple.com/library/ios/documentation/corelocation/… :
Ray Lillywhite

3
Dokładnie ten sam problem miałem grając z MapKit i CoreLocation na swoim urządzeniu (iPhone 5S, iOS 8.1.3). Nie udało mi się znaleźć lokalizacji i ponownie wystąpił ten sam błąd (pomimo dobrego sygnału sieci komórkowej). Dopóki nie włączyłem WiFi i wszystko zostało naprawione! Dziwne ... Dzięki!
Vinzzz

2
IPady @ DuraiAmuthan.H nie mają rzeczywistego sprzętu GPS. Korzystają z bazy danych adresów MAC Wi-Fi, aby określić Twoją lokalizację.
whoKnows

146

Jeśli korzystasz z symulatora:

  1. Naciśnij command + shift + ,w Xcode, aby otworzyć edytor schematów
  2. Wybierz schemat uruchamiania
  3. Przejdź do zakładki Opcje
  4. Sprawdź ✅ Allow Location Simulation
  5. Wybierz domyślną lokalizację z listy rozwijanej

Wybór Nonelokalizacji domyślnej mógł spowodować problem.


4
Łał! Dzięki, gonię za tym od tygodni. Moja aplikacja zmuszała mojego iPada lub iPhona do lokalizacji w Londynie w Anglii i nie mogłem zrozumieć, dlaczego. Wyłączyłem tę opcję i problem zniknął, może to była czkawka podczas przechwytywania lokalizacji, a następnie wyłączania i zmiany lokalizacji na tę na schemacie.
Andrew Smith

7
Pracowało dla mnie, ale musiałem też iOS Simulator>Reset Content and Settings...
bendytree

Udało mi się to dla mnie.
ScottyBlades

23

Po prostu zignoruj ​​ten błąd i poczekaj na więcej aktualizacji lub inny błąd.

Dokumentacja menedżera lokalizacji podaje, że ten błąd jest tymczasowy. Powiadamia, że ​​nie udało się natychmiast pobrać lokalizacji, ale nadal próbuje. „W takiej sytuacji możesz po prostu zignorować błąd i poczekać na nowe zdarzenie”. To naprawdę wspaniały sposób na użycie metody o nazwie locationManager:didFailWithError:- Dzięki Apple!

Apple Documentation


19

Spróbuj ponownie uruchomić symulator (zakładając, że tego właśnie używasz).

Po wypróbowaniu wszystkiego innego, to zadziałało.


U mnie też zadziałało. Dzięki
cozmin-calin

14

Restart symulatora nie działał dla mnie.

Musiałem wszystko wyczyścić "iOS Simulator" >> "Reset Content and Settings....


9

Otrzymałem ten błąd na symulatorze. Kliknięcie przycisku lokalizacji w panelu debugowania i ustawienie lokalizacji rozwiązało problem. (Upewnij się, że przycisk jest niebieski)

wprowadź opis obrazu tutaj



5

Zmiana "Lokalizacji" w symulatorze działała dla mnie.

Debuguj> Lokalizacja> (Moja została zaznaczona jako Brak zamiast Jazda rowerem po mieście np.)


5
  1. W symulatorze przejdź do Ustawienia> Ogólne> Resetuj> Resetuj lokalizację i prywatność

  2. Zamknij symulator i ponownie uruchom aplikację


3

Zakładając, że korzystasz z symulatora, możesz wybrać Debug -> Locationi ustawić lokalizację.

Jeśli nie wybrałeś żadnego, pojawi się ten błąd.


2

Jeśli używasz, custom locationupewnij się, że masz długą i krótszą długość we właściwy sposób, odwróciłem to i zmarnowałem 3 godziny, zanim zdałem sobie sprawę ...


Ame tutaj również zmarnowałem 2 godziny, ustawiłem szerokość i długość geograficzną w odpowiednich pozycjach.
Arpit B Parekh

2

Widziałem już problem, jest sposób na jego rozwiązanie, ale może zadziałać tylko raz, jeśli chcesz uruchomić projekt ponownie i za każdym razem musisz powtórzyć rozwiązanie.

1. W Xcode, Product -> Scheme -> Edit Scheme, a następnie anuluj „Allow Location Simulator”.

2. do symulatora iOS i zresetuj zawartość i ustawienia.

3.Wróć do Xcode, powtórz pierwszy krok.

4. do symulatora iOS i zresetuj. Wtedy zadziała.


1

Takie problemy można rozwiązać, ustawiając lokalizację na „ Apple”. Przynajmniej działa w celach testowych.


1
  1. Zresetowałem zawartość i ustawienia.
  2. Usunięto dane z danych pochodnych.
  3. Zrestartowałem Xcode i Simulator i pracowałem dla mnie.

z odpowiedzi @Mem i wielu innych dzięki


1

Dla zwróconych twórców :) Po prostu wybierz " Debug->Location->Freeway Drive" z menu Symulatora. Jeśli problem nadal występuje, spróbuj po wykonaniu „Symulatora-> Resetuj zawartość i ustawienia” z menu symulatora. Pomogło mi to kiedyś w tym samym problemie. W pewnym momencie lokalizacja symulatora jest ustawiona na „ Custom location”, przez co nie wykrywa on niczego.


1

Jeśli używasz symulatora, upewnij się, że schemat zezwala na lokalizację i wybrałeś lokalizację domyślną.

wprowadź opis obrazu tutaj


0

Wypróbuj w urządzeniu. Czasami symulator nie może określić Twojej lokalizacji.


0

Idź do domu w symulatorze

strona główna -> Ustawienia -> Prywatność -> Lokalizacje -> wybierz aplikację i wybierz zawsze


0

podczas dodawania uprawnień Prywatność - Lokalizacja Podczas używania Opis użytkowania w info.plist został rozwiązany za mnie

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.