Помилка диспетчера місцезнаходжень: (помилка KCLErrorDomain 0)


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

Чому виникає ця помилка?


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

1
Для мене це було те, що я використав кому, а не крапку для десяткового роздільника на замовлення.
electronix384128

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

Відповіді:


163

Ця помилка виникає, якщо ви Scheme/Edit Scheme/Options/Allow Location Simulationперевірили, але не встановили місце за замовчуванням. Я впевнений, що є й інші причини.


1
Дякую, але моє запитання: якщо ми встановимо місце за замовчуванням, чи впливає це на оновлення місцезнаходження пристрою?
sKhan

@ShafKhan Не відповідайте на запитання в коментарях. Поставте це як нове запитання.
Undistraction

9
Якщо вам цікаво, де SCHEME, перейдіть за цим посиланням developer.apple.com/library/mac/recipes/…
Бішаль Гіміре

Мені все-таки довелося "Скинути вміст і налаштування", щоб делегат зателефонував до didUpdate замість didFail після встановлення розташування за замовчуванням у редакторі схем. Тоді це спрацювало нормально.
owenfi

Це повністю вирішує мою проблему! Велике спасибі.
Ifelere Bolaji

42

ОНОВЛЕННЯ

ДЯКУЄМО Бен Мартену Ви можете зробити його постійним, використовуючи ці кроки в XCode:

  1. Продукт> Схема> Редагувати схему
  2. Клацніть Запустити .app
  3. Вкладка "Варіант"
  4. Вже встановлено прапорець Основне розташування> виберіть своє місцезнаходження
  5. Натисніть OK

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

помилка розташування в симуляторі ios


1
Щоб зробити його постійним, у Xcode: Product / Scheme / Edit Scheme ... / Run / Options / Core Location - встановіть прапорець «Allow Location Simulation» & Set «Default Location» на «None»
electronix384128

1
Так, це працює. Щиро дякую 😃👍😄😃👌👏💃🙏💃💃. Редагування мого запитання для отримання додаткових знань :)
Vaibhav Saran

33

У мене просто була ця проблема. Мені знадобився час, щоб знайти рішення, яке лише слабо пов’язане з відповіддю попереднього автора.

Аеропорт (WiFi) повинен бути увімкнений, щоб CoreLocation працював у iPhone / iPad Simulator. Я був підключений через Ethernet, тому CL не робив нічого в Simulator. Увімкніть аеропорт у налаштуваннях мережі та повторіть спробу. Ви можете змінити порядок мережевих інтерфейсів, перетягнувши аеропорт під Ethernet, якщо хочете і надалі надавати перевагу дротовому з’єднанню через бездротову мережу ...


2
У мене ця помилка, і мій комп'ютер підключений до Інтернету через Wi-Fi. Крім того, якщо я не помиляюся, Simulator не визначає місцезнаходження, завжди використовує місцезнаходження 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.

Отже, це означає, що місцезнаходження визначити не вдалося.

Я думаю, найбільш вірогідною причиною є те, що менеджер місцезнаходжень використовує WiFi для триангуляції місцезнаходження, а база даних не охоплює локальні мережі. Це, мабуть, може виправити користувач, якщо він піде сюди .

Однак, як я вже зазначав, я також іноді сприймав це як перехідну помилку під час запуску програми, заснованої на розташуванні, у місці, де зазвичай працюють дані про розташування WiFi.

Нарешті, я думаю, можна побачити цю помилку, якщо є якась апаратна несправність.


4
Він запитує про: KCLErrorDomain
electronix384128

У цій відповіді немає посилання на kCLErrorDomain, саме це і шукає OP.
Norman H

5

1) перевірте, чи дійсно у вас є дійсне з'єднання Wi-Fi та 3G

якщо ви це зробите тоді

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


Я досі не розумію, чому під час тестування я не можу отримати місцезнаходження без Wi-Fi або 3g на iPad, чому GPS не використовується? Тож користувач на пристрої не може отримати місцезнаходження без Інтернету? Я також працюю над додатком у режимі офлайн ...
Renetik

Наскільки я знаю, GPS не потребує з’єднання з Інтернетом чи Wi-Fi. Це просто приймач, якщо він знаходиться у доступному місці з 2 або 3 супутниками GPS, ми можемо отримати координати географічного розташування. Нам потрібно турбуватися про підключення до Інтернету, лише якщо Геоінформація потрібна для будь-якої діяльності в Інтернеті, наприклад, на картах Google, яка залежить від Інтернету, щоб показати розташування карт, які не кешовані локально. Спеціальні програми навігації, такі як CoPilot, зберігають карти на борту.
Дурай Амутан. H

3

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

Оскільки, коли ця помилка викидається, викликається метод locationManager: didFailWithError: delegate, можна обробити цей конкретний випадок в умовному операторі, зіставляючи "[домен помилки]" та "[код помилки]" з об'єкта помилки, переданого цьому методу.


3

Точною причиною, яку я виявив, є конфлікт, що виникає при моделюванні розташування як в симуляторі ios “Налаштування налагодження”, так і в налаштуваннях xcode “Редагування схем”. Переконайтеся, що ви встановили місцезнаходження користувача за замовчуванням у будь-якому з них і позначте інший до None вирішив проблему, сподіваючись, що це може допомогти точно. InXcode:введіть тут опис зображення

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



1

Ви можете додати свій власний список місцеположень до Xcode, щоб тестувати свої програми.

У Xcode виберіть меню Налагодження / імітація розташування, і вам буде запропоновано:

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.