didFailWithError: Error Domain = kCLErrorDomain Code = 0 «Операция не может быть завершена. (ошибка kCLErrorDomain 0.) »

82

Я хочу узнать текущее местоположение, но вместо этого получаю сообщение об ошибке.

Это фрагмент моего контроллера представления.

- (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);
}

Я ожидаю, что locationManager:didUpdateLocations:будет вызван метод делегата , но вместо этого locationManager:didFailWithError:вызывается только и печатается это:

didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 
Лука
источник
В качестве альтернативы вы можете использовать API Google. Обратитесь к моему ответу здесь stackoverflow.com/a/40670608/2033377
Дипак Такур
симулятор goto -> функции -> местоположение -> Apple. если у вас установлен этот параметр, noneон не сработает и выдаст эту ошибку., Я сделал это случайно
Maddocks,

Ответы:

106
  1. Убедитесь, что у вас действительно есть действующее соединение WiFi и 3G.

    ... если да, то:

  2. Зайдите в настройки и сбросьте свои службы определения местоположения

  3. Сбросить настройки сети

Это должно решить эту проблему. Это связано с устройством / сетью, а не с приложением. Это раздражает, особенно если ваше приложение зависит от служб определения местоположения, а устройство поддерживает только Wi-Fi, и люди дают отрицательные оценки в AppStore ... Простите меня, я становлюсь немного эмоциональным.

MeM
источник
2
Насколько я знаю, GPS не требует подключения к Интернету или Wi-Fi. Это просто приемник, если он находится в доступном месте с 2 или 3 спутниками GPS, мы можем получить координаты географического местоположения. Тогда почему возникает ошибка, если есть нет интернета или Wi-Fi?
Durai Amuthan.H
2
Один голос за указание на сброс служб определения местоположения и настроек сети
Durai Amuthan.H
3
Вам не нужно проходить эти шаги. Просто проигнорируйте эту ошибку и дождитесь новых обновлений. Смотрите мой ответ ниже или просмотрите документацию на сайте developer.apple.com/library/ios/documentation/corelocation/… :
Рэй Лиллиуайт
3
У меня была точно такая же проблема, когда я играл с MapKit и CoreLocation на моем устройстве (iPhone 5S, iOS 8.1.3). Мне не удалось определить местоположение, и я снова и снова получал ту же ошибку (несмотря на хороший сигнал мобильной сети). Пока я не включил WiFi, и все было исправлено! Странно ... Спасибо!
Vinzzz
2
@ DuraiAmuthan.H На iPad нет реального оборудования GPS. Они используют базу данных MAC-адресов Wi-Fi для определения вашего местоположения.
whoKnows
146

Если вы используете симулятор:

  1. Нажмите command + shift + , в Xcode, чтобы открыть редактор схем
  2. Выберите схему запуска
  3. Перейдите на вкладку Параметры
  4. Проверить ✅ Allow Location Simulation
  5. Выберите местоположение по умолчанию в раскрывающемся списке

Выбор в Noneкачестве местоположения по умолчанию мог вызвать проблему.

хан
источник
4
Вот Это Да! Спасибо, я гонялся за этим несколько недель. Мое приложение заставляло мой iPad или iPhone перемещаться в Лондон, Англия, и я не мог понять почему. Я отключил эту опцию, и проблема исчезла. Может быть, это была икота, которая захватывала местоположение, а затем уходила и меняла местоположение на то, что указано на схеме.
Эндрю Смит
7
Сработало для меня, но я также должен был сделать iOS Simulator>Reset Content and Settings...
bendytree
Прибил это для меня.
ScottyBlades
23

Просто проигнорируйте эту ошибку и дождитесь новых обновлений или другой ошибки.

В документации к диспетчеру местоположения говорится, что эта ошибка временная. Он сообщает вам, что не смог сразу получить местоположение, но продолжает попытки. «В такой ситуации можно просто проигнорировать ошибку и дождаться нового события». Это действительно тупой способ использовать метод с именем locationManager:didFailWithError:- Спасибо, Apple!

Apple Documentation

Рэй Лиллиуайт
источник
19

Попробуйте перезапустить симулятор (при условии, что вы его используете).

После попытки всего остального это сработало для меня.

Ян
источник
У меня тоже сработало. Спасибо
cozmin-calin 01 окт.2020,
14

У меня не получился перезапуск симулятора.

Пришлось все очищать через "iOS Simulator" >> "Reset Content and Settings....

Брэндон О'Рурк
источник
9

Я получал эту ошибку на симуляторе. Нажатие кнопки местоположения на панели отладки и установка местоположения устранили проблему для меня. (Убедитесь, что кнопка синего цвета)

введите описание изображения здесь

рунак
источник
5

У меня сработало изменение «Местоположение» на симуляторе.

Отладка> Местоположение> (у меня не было отмечено ни одного пункта вместо City Bicycle Ride, например)

Рафаэль Онофре
источник
5
  1. В симуляторе перейдите в Настройки> Общие> Сброс> Сбросить местоположение и конфиденциальность.

  2. Закройте симулятор и снова запустите приложение

Адам Джонс
источник
3

Предполагая, что вы используете симулятор, вы можете Debug -> Locationуказать местоположение.

Если вы ничего не выбрали, у вас будет эта ошибка.

Родриго Гонсалес
источник
2

Если вы используете, custom locationубедитесь, что у вас есть длинные и широчайшие правильные пути, я перевернул его и потратил 3 часа, прежде чем я понял ...

Джо Махер
источник
Здесь я тоже потратил 2 часа, установив Широту и Долготу в правильные позиции.
Arpit B Parekh
2

Я видел эту проблему раньше, есть способ ее решить, но он может сработать только один раз. Если вы хотите запускать проект снова, и вам нужно повторять решение каждый раз.

1. В Xcode, Продукт -> Схема -> Изменить схему, затем отмените «Разрешить имитатор местоположения».

2. Перейдите в симулятор iOS и сбросьте содержимое и настройки.

3. Снова перейдите к Xcode, повторите первый шаг.

4. В iOS Simulator и сбросить. Тогда все заработает.

HsuChihYung
источник
1

Подобные проблемы можно решить, установив для местоположения значение " Apple". По крайней мере, это работает для целей тестирования.

Pandurang Yachwad
источник
1
  1. Я сбросил содержимое и настройки.
  2. Удалены данные из производных данных.
  3. Перезапустил Xcode и Simulator и работал у меня.

из ответа @Mem и многих других спасибо

Арпит Б Парех
источник
1

Для вернувшихся разработчиков :) Просто выберите " Debug->Location->Freeway Drive" в меню симулятора. Если проблема не исчезла, попробуйте после выполнения «Симулятор-> Сбросить содержимое и настройки» из меню симулятора. Однажды это помогло мне с той же проблемой. Некоторое время симулятор установлен на " Custom location", из-за чего он ничего не обнаруживает.

SaffronState
источник
1

Если вы используете симулятор, убедитесь, что схема позволяет местоположение, и вы выбрали местоположение по умолчанию.

введите описание изображения здесь

Тал Цион
источник
0

Попробуйте в устройстве. Иногда симулятор не может определить ваше местоположение.

Субхо
источник
0

Иди домой в симуляторе

главная страница -> Настройки -> Конфиденциальность -> Местоположение -> выберите приложение и выберите всегда

Пратиш Б
источник
0

при добавлении разрешения Privacy - Location When In Use Usage Description в info.plist это было решено для меня

Miguelzolk
источник