ข้อผิดพลาดตัวจัดการตำแหน่ง: (ข้อผิดพลาด KCLErrorDomain 0)


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

เหตุใดจึงเกิดข้อผิดพลาดนี้


คำถามที่ดี - บางครั้งฉันเคยเห็นข้อผิดพลาดเดียวกัน ฉันเชื่อว่ามันเกิดขึ้นเมื่อผู้จัดการสถานที่ไม่สามารถรับตำแหน่งปัจจุบัน - เช่นเนื่องจากไม่มีการแก้ไขที่ดีพอ แต่ฉันเคยเห็นมันหลายครั้งหลังจากได้รับการแก้ไขที่ดีจากนั้นข้อผิดพลาดนี้จะปรากฏขึ้นในภายหลัง
frankodwyer

1
สำหรับฉันฉันใช้ลูกน้ำแทนจุดสำหรับตัวคั่นทศนิยมตำแหน่งที่กำหนดเอง
electronix384128

ฉันประสบปัญหาเดียวกันตั้งค่าความถูกต้องเป็น kCLLocationAccuracyBest หรือค่าขนาดใหญ่บางค่าละเว้นข้อผิดพลาดและรอการอัปเดตเพิ่มเติม
zaheer

คำตอบ:


164

ข้อผิดพลาดนี้เกิดขึ้นหากคุณได้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

อัปเดต

ขอบคุณBen Marten คุณสามารถทำให้ถาวรได้โดยใช้ขั้นตอนเหล่านี้ใน XCode:

  1. ผลิตภัณฑ์> โครงการ> แก้ไขโครงการ
  2. คลิกเรียกใช้. app
  3. แท็บตัวเลือก
  4. ตรวจสอบตำแหน่งหลักแล้ว> เลือกตำแหน่งของคุณ
  5. กด OK

นอกจากนั้นแม้ว่าคุณจะไม่ได้เชื่อมต่อกับ wifi คุณสามารถตั้งค่าตำแหน่งในโปรแกรมจำลองผ่านรายการเมนูด้านบนDebug>Locationและทำให้เป็นแบบถาวรตามขั้นตอนด้านบน

ข้อผิดพลาดตำแหน่งในโปรแกรมจำลอง iOS


1
เพื่อทำให้เป็นแบบถาวรใน Xcode: Product / Scheme / Edit Scheme ... / Run / Options / Core Location - เลือก "Allow Location Simulation" และตั้งค่า "Default Location" เป็น "None"
electronix384128

1
ใช่มันใช้งานได้ ขอบคุณมาก😃👍😄😃👌👏💃🙏💃💃. แก้ไขคำถามของฉันเพื่อความรู้เพิ่มเติม :)
Vaibhav Saran

33

ฉันเพิ่งมีปัญหานี้ ฉันใช้เวลาสักพักเพื่อหาวิธีแก้ปัญหาซึ่งเกี่ยวข้องกับคำตอบของผู้โพสต์ก่อนหน้าอย่างหลวม ๆ

สนามบิน (WiFi) จะต้องอยู่ในสำหรับ CoreLocation ในจำลอง iPhone / iPad ในการทำงาน ฉันเชื่อมต่อผ่านอีเธอร์เน็ตดังนั้น CL จึงไม่ทำอะไรเลยใน Simulator เปิดสนามบินในการตั้งค่าเครือข่ายของคุณแล้วลองอีกครั้ง คุณสามารถเปลี่ยนลำดับของอินเทอร์เฟซเครือข่ายของคุณได้โดยลาก Airport ด้านล่าง Ethernet หากคุณต้องการใช้การเชื่อมต่อแบบใช้สายผ่านระบบไร้สายของคุณ ...


2
ฉันมีข้อผิดพลาดนี้และคอมพิวเตอร์ของฉันเชื่อมต่อกับ WiFi รางอินเทอร์เน็ต นอกจากนี้ถ้าฉันไม่เข้าใจผิด Simulator ไม่สามารถแก้ไขตำแหน่งได้ให้ใช้ตำแหน่ง Apple Office เสมอ เมื่อใช้กรอบ MapKit จุดสีน้ำเงินจะแสดงขึ้นเพื่อให้มีการตั้งค่าตำแหน่ง มันไม่สมเหตุสมผลเท่าไหร่
Alex Angelico

1
ฉันเพิ่งเปิดมันไม่ใช่รายการแรกในรายการเครือข่ายของฉันและทุกอย่างเริ่มทำงาน (Lion, XC 4.2)
David H

1
ฉันมีปัญหาเดียวกัน แต่ไม่ใช่ในอุปกรณ์จำลอง! (iPhone 5S, iOS 8.1.3) ฉันกำลังดีบักแอปพลิเคชันด้วย MapKit & CoreLocation และทั้งสองเฟรมเวิร์กส่งกลับข้อผิดพลาดเดียวกัน จนกว่าฉันจะเปิด Wifi! ขอบคุณ :)
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) ตรวจสอบว่าคุณมีการเชื่อมต่อ WiFi และ 3G ที่ถูกต้อง

ถ้าคุณทำแล้ว

2) ไปที่การตั้งค่าและรีเซ็ตบริการตำแหน่งของคุณ 3) รีเซ็ตการตั้งค่าเครือข่ายของคุณ


ฉันยังไม่เข้าใจว่าทำไมฉันไม่สามารถหาตำแหน่งโดยไม่มี wifi หรือ 3g บน iPad เมื่อทำการทดสอบทำไมจึงไม่ใช้ GPS ดังนั้นผู้ใช้บนอุปกรณ์ไม่สามารถรับตำแหน่งโดยไม่ใช้อินเทอร์เน็ต? ฉันกำลังทำงานกับแอพโหมดออฟไลน์ ...
Renetik

เท่าที่ฉันรู้ว่า GPS ไม่จำเป็นต้องเชื่อมต่ออินเทอร์เน็ตหรือ wifi เป็นเพียงเครื่องรับหากอยู่ในตำแหน่งที่สามารถเข้าถึงได้ด้วยดาวเทียม GPS 2 หรือ 3 ดวงเราจะได้รับพิกัดตำแหน่งทางภูมิศาสตร์เราต้องกังวลเกี่ยวกับการเชื่อมต่ออินเทอร์เน็ตก็ต่อเมื่อ ข้อมูลภูมิศาสตร์เป็นสิ่งจำเป็นสำหรับกิจกรรมออนไลน์เช่นแผนที่ Google ซึ่งขึ้นอยู่กับอินเทอร์เน็ตเพื่อแสดงตำแหน่งแผนที่ที่ไม่ได้แคชไว้ในเครื่องแอปพลิเคชั่นการนำทางเฉพาะเช่น CoPilot ทำให้แผนที่อยู่บนเรือ
Durai Amuthan

3

ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Location Manager ไม่สามารถรับข้อมูลตำแหน่งได้ทันที ฉันพบว่าข้อผิดพลาดนี้เกิดขึ้นเมื่อมีการเรียกเมธอด startUpdatingLocation สำหรับฉันสิ่งนี้เกิดขึ้นบน iPod แต่ไม่ใช่บน iPhone นั่นเป็นเรื่องที่สมเหตุสมผลเนื่องจาก iPhone มีหลายวิธี (เช่นเครือข่ายเซลลูลาร์) ในการรับข้อมูลตำแหน่งและสามารถประเมินตำแหน่งได้อย่างรวดเร็วในขณะที่ iPod ใช้เวลามากกว่าซึ่งทำให้เกิดข้อผิดพลาดนี้ขึ้นบน iPod

เนื่องจากเมื่อเกิดข้อผิดพลาดนี้ locationManager: didFailWithError: มีการเรียกเมธอด delegate เราสามารถจัดการกรณีเฉพาะนี้ในคำสั่งเงื่อนไขโดยการจับคู่ "[error domain]" และ "[error code]" จากออบเจ็กต์ข้อผิดพลาดที่ส่งไปยังเมธอดนี้


3

สาเหตุที่แท้จริงที่ฉันพบคือมีความขัดแย้งที่เกิดขึ้นในการจำลองตำแหน่งทั้งในโปรแกรมจำลอง ios“ การตั้งค่าดีบัก” และในการตั้งค่า xcode“ แก้ไขโครงร่าง” ตรวจสอบให้แน่ใจว่าได้ตั้งค่าตำแหน่งผู้ใช้เริ่มต้นของคุณในรายการใดรายการหนึ่งแล้วทำเครื่องหมาย อีกอันถึงไม่มีแก้ปัญหาหวังว่านี่อาจช่วยได้อย่างแน่นอน 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> ผลิตภัณฑ์> โครงร่าง> แก้ไขโครงร่าง> การจำลองตำแหน่ง chek> ตั้งค่าตำแหน่งของคุณ> และเรียกใช้แอปอีกครั้งหวังว่ามันจะใช้งานได้!


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

หากคุณได้รับสิ่งนี้บนอุปกรณ์อาจเป็นไปได้ว่าคุณไม่ได้ขอหรือผู้ใช้ปฏิเสธการอนุญาตในการรวบรวมสถานที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.