Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
เหตุใดจึงเกิดข้อผิดพลาดนี้
Location Manager Error : Operation could not be completed(KCLErrorDomain error 0)
เหตุใดจึงเกิดข้อผิดพลาดนี้
คำตอบ:
ข้อผิดพลาดนี้เกิดขึ้นหากคุณได้Scheme/Edit Scheme/Options/Allow Location Simulation
ตรวจสอบ แต่ไม่มีการตั้งค่าตำแหน่งเริ่มต้น ฉันแน่ใจว่ามีสาเหตุอื่นเช่นกัน
อัปเดต
ขอบคุณBen Marten คุณสามารถทำให้ถาวรได้โดยใช้ขั้นตอนเหล่านี้ใน XCode:
- ผลิตภัณฑ์> โครงการ> แก้ไขโครงการ
- คลิกเรียกใช้. app
- แท็บตัวเลือก
- ตรวจสอบตำแหน่งหลักแล้ว> เลือกตำแหน่งของคุณ
- กด OK
นอกจากนั้นแม้ว่าคุณจะไม่ได้เชื่อมต่อกับ wifi คุณสามารถตั้งค่าตำแหน่งในโปรแกรมจำลองผ่านรายการเมนูด้านบนDebug>Location
และทำให้เป็นแบบถาวรตามขั้นตอนด้านบน
ฉันเพิ่งมีปัญหานี้ ฉันใช้เวลาสักพักเพื่อหาวิธีแก้ปัญหาซึ่งเกี่ยวข้องกับคำตอบของผู้โพสต์ก่อนหน้าอย่างหลวม ๆ
สนามบิน (WiFi) จะต้องอยู่ในสำหรับ CoreLocation ในจำลอง iPhone / iPad ในการทำงาน ฉันเชื่อมต่อผ่านอีเธอร์เน็ตดังนั้น CL จึงไม่ทำอะไรเลยใน Simulator เปิดสนามบินในการตั้งค่าเครือข่ายของคุณแล้วลองอีกครั้ง คุณสามารถเปลี่ยนลำดับของอินเทอร์เฟซเครือข่ายของคุณได้โดยลาก Airport ด้านล่าง Ethernet หากคุณต้องการใช้การเชื่อมต่อแบบใช้สายผ่านระบบไร้สายของคุณ ...
จากเอกสาร 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 ใช้งานได้
สุดท้ายนี้ฉันเดาว่าเป็นไปได้ที่จะเห็นข้อผิดพลาดนี้หากมีความล้มเหลวของฮาร์ดแวร์บางอย่าง
1) ตรวจสอบว่าคุณมีการเชื่อมต่อ WiFi และ 3G ที่ถูกต้อง
ถ้าคุณทำแล้ว
2) ไปที่การตั้งค่าและรีเซ็ตบริการตำแหน่งของคุณ 3) รีเซ็ตการตั้งค่าเครือข่ายของคุณ
ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Location Manager ไม่สามารถรับข้อมูลตำแหน่งได้ทันที ฉันพบว่าข้อผิดพลาดนี้เกิดขึ้นเมื่อมีการเรียกเมธอด startUpdatingLocation สำหรับฉันสิ่งนี้เกิดขึ้นบน iPod แต่ไม่ใช่บน iPhone นั่นเป็นเรื่องที่สมเหตุสมผลเนื่องจาก iPhone มีหลายวิธี (เช่นเครือข่ายเซลลูลาร์) ในการรับข้อมูลตำแหน่งและสามารถประเมินตำแหน่งได้อย่างรวดเร็วในขณะที่ iPod ใช้เวลามากกว่าซึ่งทำให้เกิดข้อผิดพลาดนี้ขึ้นบน iPod
เนื่องจากเมื่อเกิดข้อผิดพลาดนี้ locationManager: didFailWithError: มีการเรียกเมธอด delegate เราสามารถจัดการกรณีเฉพาะนี้ในคำสั่งเงื่อนไขโดยการจับคู่ "[error domain]" และ "[error code]" จากออบเจ็กต์ข้อผิดพลาดที่ส่งไปยังเมธอดนี้
สาเหตุที่แท้จริงที่ฉันพบคือมีความขัดแย้งที่เกิดขึ้นในการจำลองตำแหน่งทั้งในโปรแกรมจำลอง ios“ การตั้งค่าดีบัก” และในการตั้งค่า xcode“ แก้ไขโครงร่าง” ตรวจสอบให้แน่ใจว่าได้ตั้งค่าตำแหน่งผู้ใช้เริ่มต้นของคุณในรายการใดรายการหนึ่งแล้วทำเครื่องหมาย อีกอันถึงไม่มีแก้ปัญหาหวังว่านี่อาจช่วยได้อย่างแน่นอน InXcode:
ในเครื่องจำลอง iPhone / iPad:
คุณสามารถเพิ่มรายชื่อสถานที่ของคุณเองลงใน Xcode เพื่อทดสอบแอปพลิเคชันของคุณได้
จากภายใน Xcode ให้เลือกเมนู Debug / Simulate Location และคุณจะได้รับ:
a. "Don't Simulate Location"
b. 12 example locations
c. "Add GPX File to Project..."
เลือก "เพิ่มไฟล์ GPX ในโครงการ ... " และเลือกไฟล์ GPX ที่คุณสร้างขึ้น
ไปที่โครงการ Xcode> ผลิตภัณฑ์> โครงร่าง> แก้ไขโครงร่าง> การจำลองตำแหน่ง chek> ตั้งค่าตำแหน่งของคุณ> และเรียกใช้แอปอีกครั้งหวังว่ามันจะใช้งานได้!
ขอบคุณบทความนี้ ( 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>
หวังว่านี่จะช่วยได้! มันช่วยฉันได้อย่างแน่นอน
ข้อผิดพลาดนี้เกิดขึ้นในขณะที่คุณเรียกใช้โปรแกรมของคุณ แต่คุณจำลองตำแหน่งหลังจากที่คุณรันโปรแกรม
ฉันได้รับวิธีการ: ออกจากโปรแกรมจำลองของคุณและรีสตาร์ทจากนั้นตั้งค่าตำแหน่งโปรแกรมจำลองของคุณก่อนที่คุณจะเรียกใช้โปรแกรมและมันก็ใช้ได้สำหรับฉัน
หวังว่านี่จะช่วยได้! มันช่วยฉันได้อย่างแน่นอน ขอบคุณ ...
ทั้งหมดนี้ไม่ได้ผลสำหรับฉัน .. สิ่งที่ได้ผลสำหรับฉันคือ - ตั้งค่าตำแหน่งจากเครื่องจำลองnone
แล้วเปลี่ยนกลับเป็นcustom
ตำแหน่งในขณะที่แอปกำลังทำงาน
คำแนะนำทั้งหมดไม่ได้ช่วยอะไรในกรณีของฉัน สิ่งที่ช่วยได้คือถอนการติดตั้งแอปออกจากอุปกรณ์จำลองติดตั้งใหม่และอนุญาตให้เข้าถึงตำแหน่ง (ในแอปการตั้งค่า)
หากคุณได้รับสิ่งนี้บนอุปกรณ์อาจเป็นไปได้ว่าคุณไม่ได้ขอหรือผู้ใช้ปฏิเสธการอนุญาตในการรวบรวมสถานที่