Ошибка диспетчера местоположения: (ошибка KCLErrorDomain 0)


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

Почему возникает эта ошибка?


хороший вопрос - иногда я видел ту же ошибку. Я считаю, что это происходит, когда диспетчер местоположения не может получить текущее местоположение - например, из-за отсутствия достаточно хорошего исправления. Но я видел его раз после того, как он уже получил хорошее исправление, то в дальнейшем эта ошибка выскакивает.
frankodwyer

1
Для меня это было то, что я использовал запятую вместо точки для пользовательского десятичного разделителя местоположения.
electronicix384128

У меня была такая же проблема, установите точность kCLLocationAccuracyBest или какое-то большое значение, игнорируйте ошибку и ждите дополнительных обновлений.
zaheer

Ответы:


163

Эта ошибка возникает, если вы Scheme/Edit Scheme/Options/Allow Location Simulationпроверили, но не установили местоположение по умолчанию. Я уверен, что есть и другие причины.


1
Спасибо, но мой вопрос в том, если мы установим местоположение по умолчанию, повлияет ли это на обновление местоположения устройства?
sKhan

@ShafKhan Не отвечайте на вопросы в комментариях. Задайте это как новый вопрос.
Undistraction

9
Если вам интересно, где находится SCHEME, перейдите по этой ссылке developer.apple.com/library/mac/recipes/…
Bishal Ghimire

Мне все равно пришлось «сбросить содержимое и настройки», чтобы делегат вызвал didUpdate вместо didFail после установки местоположения по умолчанию в редакторе схем. Потом нормально заработало.
owenfi

Это полностью решает мою проблему! Большое спасибо.
Ifelere Bolaji

42

ОБНОВИТЬ

СПАСИБО Бену Мартену. Вы можете сделать его постоянным, выполнив следующие действия в XCode:

  1. Продукт> Схема> Изменить схему
  2. Щелкните Выполнить .app
  3. Вкладка Option
  4. Уже проверил Core Location> выберите свое местоположение
  5. Нажмите ОК

Кроме того, даже если вы не подключены к Wi-Fi, вы можете установить местоположение в симуляторе через пункты верхнего меню Debug>Locationи сделать его постоянным, следуя инструкциям выше.

ошибка местоположения в симуляторе ios


1
Чтобы сделать его постоянным, в Xcode: Product / Scheme / Edit Scheme ... / Run / Options / Core Location - установите флажок «Allow Location Simulation» и установите «Default Location» на «None»
electronicix384128

1
Дассс, работает. Большое вам спасибо. Редактирую свой вопрос для большего знания :)
Вайбхав Саран

33

Просто у меня была эта проблема. Мне потребовалось время, чтобы найти решение, которое лишь слабо связано с ответом предыдущего автора.

Для работы CoreLocation в симуляторе iPhone / iPad должен быть включен аэропорт (WiFi) . Я был подключен через Ethernet, поэтому CL ничего не делал в симуляторе. Включите аэропорт в настройках сети и повторите попытку. Вы можете изменить порядок сетевых интерфейсов, перетащив Airport под Ethernet, если вы хотите и дальше использовать проводное соединение, а не беспроводное ...


2
У меня эта ошибка, и мой компьютер подключен к Интернету через Wi-Fi. Также, если я не ошибаюсь, Симулятор не определяет местоположение, всегда использует местоположение Apple Office. При использовании платформы MapKit отображается синяя точка, поэтому местоположение установлено. В этом нет особого смысла.
Alex Angelico

1
Я только что включил его, он не первый в моем списке сетей, и все заработало (Lion, XC 4.2)
Дэвид Х

1
У меня была такая же проблема, но не на симуляторе, а на устройстве! (iPhone 5S, iOS 8.1.3). Я отлаживал приложение с помощью MapKit и CoreLocation, и оба фреймворка всегда возвращали одну и ту же ошибку. Пока я не включил Wi-Fi! Спасибо :)
Vinzzz

13

Из документации API:

CLError

Коды ошибок, возвращаемые объектом диспетчера местоположения.

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

Константы

kCLErrorLocationUnknown Диспетчеру местоположения не удалось получить значение местоположения прямо сейчас. Доступно в iPhone OS 2.0 и более поздних версиях. Заявлено в CLError.h.

kCLErrorDenied Доступ к службе определения местоположения был запрещен пользователем. Доступно в iPhone OS 2.0 и новее. Заявлено в CLError.h.

kCLErrorNetwork Сеть была недоступна или произошла сетевая ошибка. Доступно в iPhone OS 3.0b и новее. Заявлено в CLError.h.

kCLErrorHeadingFailure Не удалось определить заголовок. Доступно в iPhone OS 3.0 и новее. Заявлено в CLError.h.

Это означает, что местоположение не может быть определено.

Я предполагаю, что наиболее вероятная причина в том, что менеджер местоположения использует Wi-Fi для триангуляции местоположения, а база данных не охватывает локальные сети. Это, по-видимому, может быть исправлено пользователем, если он перейдет сюда .

Однако, как я уже отмечал, я также иногда видел это как временную ошибку при запуске программы, основанной на местоположении, в месте, где обычно работают данные о местоположении WiFi.

Наконец, я предполагаю, что эту ошибку можно увидеть, если есть какой-то аппаратный сбой.


4
Он спрашивает о: KCLErrorDomain
electronicix384128

В этом ответе нет ссылки на kCLErrorDomain, что и ищет OP.
Norman H

5

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

если ты это сделаешь, то

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


Я до сих пор не понимаю, почему я не могу определить местоположение без Wi-Fi или 3G на iPad при тестировании, почему не используется GPS? Итак, пользователь на устройстве не может определить местоположение без Интернета? Я также работаю над приложением для автономного режима ...
Renetik 06

Насколько я знаю, GPS не требует подключения к Интернету или Wi-Fi. Это просто приемник, если он находится в доступном месте с 2 или 3 спутниками GPS, мы можем получить координаты географического местоположения. Нам нужно беспокоиться о подключении к Интернету, только если GeoInformation необходима для любой онлайн-активности, такой как карты Google, которые зависят от Интернета, чтобы показывать местоположения на карте, которые не кэшируются локально. Специальные навигационные приложения, такие как CoPilot, хранят карты на борту.
Durai Amuthan.H 06

3

Эта ошибка возникает, когда диспетчер местоположения не может немедленно получить информацию о местоположении. Я обнаружил, что эта ошибка возникает при вызове метода startUpdatingLocation. Для меня это происходило на iPod, но не на iPhone. Это имеет смысл, поскольку у iPhone есть больше способов (например, сотовая сеть) для получения информации о местоположении и он может получить быструю оценку местоположения, тогда как iPod требует больше времени, что привело к появлению этой ошибки на iPod.

Поскольку при возникновении этой ошибки вызывается метод locationManager: didFailWithError: делегат, можно обработать этот конкретный случай в условном операторе, сопоставив «[домен ошибки]» и «[код ошибки]» из объекта ошибки, переданного этому методу.


3

Точная причина того, что я обнаружил, заключается в том, что существует конфликт при моделировании местоположения как в симуляторе ios «Настройки отладки», так и в настройках xcode «Редактировать схемы». Убедитесь, что вы установили местоположение пользователя по умолчанию в любом из них и отметьте другой к None решил проблему, надеюсь, это наверняка поможет. InXcode:введите описание изображения здесь

В симуляторе iphone / ipad:введите описание изображения здесь



1

Вы можете добавить свой собственный список местоположений в Xcode для тестирования ваших приложений.

В Xcode выберите меню Debug / Simulate Location, и вам будет предложено:

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

Выберите «Добавить файл GPX в проект ...» и выберите созданный файл GPX.


0

Перейдите в проект Xcode> продукт> схема> отредактируйте схему> проверьте симуляцию местоположения> установите свое местоположение> и снова запустите приложение. Надеюсь, оно сработает!


0

Благодаря этой статье ( https://possiblemobile.com/2013/04/using-xcode-to-test-location-services/ ) мне посоветовали взглянуть на данные в моем пользовательском файле GPX, и там была обнаружена проблема.

Некоторые файлы GPX, которые вы можете получить из разных источников, могут иметь следующие элементы, указывающие разные координаты в указанном пути. Это не будет работать с имитацией местоположения Xcode.

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

Что вам нужно сделать, так это найти все вхождения элемента «trkpt» и заменить его на «wpt» в вашем любимом текстовом / xml-редакторе. Конечный результат должен быть примерно таким:

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

Надеюсь это поможет! Это, безусловно, помогло мне.


0

Эта ошибка возникает при запуске вашей программы, но вы имитируете местоположение после запуска программы.

У меня есть метод: выйдите из симулятора и перезапустите его, затем установите местоположение симулятора перед запуском программы, и он работает для меня.

Надеюсь это поможет! Это, безусловно, помогло мне. Спасибо...


0

все это не сработало для меня ... что сработало для меня: - установить местоположение из симулятора, чтобы noneзатем изменить его обратно на customместоположение во время работы приложения.


0

В моем случае все предложения не помогли. Что помогло, так это удалить приложение с симулятора, переустановить его и разрешить доступ к местоположению (в приложении настроек).


-1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.