คำถามติดแท็ก cllocationmanager

26
บริการตำแหน่งไม่ทำงานใน iOS 8
แอพของฉันที่ทำงานได้ดีบน iOS 7 ไม่สามารถทำงานกับ iOS 8 SDK CLLocationManagerไม่ส่งคืนตำแหน่งและฉันไม่เห็นแอปของฉันภายใต้การตั้งค่า -> บริการระบุตำแหน่ง ฉันทำการค้นหาโดย Google เกี่ยวกับปัญหานี้ แต่ไม่มีอะไรเกิดขึ้น มีอะไรผิดปกติ?

15
รับตำแหน่งปัจจุบันของผู้ใช้ / พิกัด
ฉันจะเก็บตำแหน่งปัจจุบันของผู้ใช้และแสดงตำแหน่งบนแผนที่ได้อย่างไร ฉันสามารถแสดงพิกัดที่กำหนดไว้ล่วงหน้าบนแผนที่ฉันไม่ทราบวิธีรับข้อมูลจากอุปกรณ์ นอกจากนี้ฉันรู้ว่าฉันต้องเพิ่มบางรายการลงใน Plist ฉันจะทำสิ่งนั้นได้อย่างไร


3
พฤติกรรมของ API ตำแหน่งที่เปลี่ยนแปลงอย่างมีนัยสำคัญเมื่อยุติ / ระงับ?
นี่คือส่วนจากเอกสารCLLocationManager ที่อธิบายลักษณะการทำงานของแอปด้วยstartMonitoringSignificantLocationChanges : หากคุณเริ่มบริการนี้และแอปพลิเคชันของคุณถูกยกเลิกในเวลาต่อมาระบบจะเปิดแอปพลิเคชันอีกครั้งโดยอัตโนมัติในพื้นหลังหากมีเหตุการณ์ใหม่เข้ามา ในกรณีเช่นนี้พจนานุกรมตัวเลือกจะส่งผ่านไปยังแอปพลิเคชัน: didFinishLaunchingWithOptions: วิธีการของตัวแทนแอปพลิเคชันของคุณมีคีย์ UIApplicationLaunchOptionsLocationKey เพื่อระบุว่าแอปพลิเคชันของคุณถูกเปิดใช้เนื่องจากเหตุการณ์ที่ตั้ง เมื่อเปิดใหม่คุณยังต้องกำหนดค่าออบเจ็กต์ตัวจัดการสถานที่และเรียกใช้เมธอดนี้เพื่อรับเหตุการณ์ตำแหน่งต่อไป เมื่อคุณเริ่มบริการตำแหน่งใหม่เหตุการณ์ปัจจุบันจะถูกส่งไปยังผู้รับมอบสิทธิ์ของคุณทันที นอกจากนี้คุณสมบัติตำแหน่งของออบเจ็กต์ตัวจัดการสถานที่ของคุณจะถูกเติมด้วยออบเจ็กต์ตำแหน่งล่าสุดก่อนที่คุณจะเริ่มบริการตำแหน่ง ดังนั้นความเข้าใจของผมคือว่าถ้ายุติแอปของคุณ (และผมถือว่าถ้าคุณไม่โทรstopMonitoringSignificantLocationChangesจากapplicationWillTerminate ) คุณจะได้รับการตื่นขึ้นมาด้วยUIApplicationLaunchOptionsLocationKeyพารามิเตอร์การประยุกต์ใช้: didFinishLaunchingWithOptions เมื่อมาถึงจุดที่คุณสร้างของคุณCLLocationManagerโทรstartMonitoringSignificantLocationChangesและทำการประมวลผลที่ตั้งของพื้นหลังของคุณสำหรับระยะเวลาที่ จำกัด ดังนั้นฉันสบายดีกับบิตนี้ ย่อหน้าก่อนหน้านี้พูดถึงสิ่งที่เกิดขึ้นเมื่อแอปถูกยุติเท่านั้นไม่ได้แนะนำสิ่งที่คุณทำเมื่อแอปพลิเคชันถูกระงับ เอกสารสำหรับdidFinishLaunchingWithOptionsกล่าวว่า: แอปพลิเคชันติดตามการอัปเดตตำแหน่งในพื้นหลังถูกล้างและตอนนี้ได้เปิดใช้งานใหม่แล้ว ในกรณีนี้พจนานุกรมจะมีคีย์ที่ระบุว่าแอปพลิเคชันถูกเปิดใช้งานอีกครั้งเนื่องจากเหตุการณ์ตำแหน่งใหม่ แนะนำว่าคุณจะรับสายนี้ก็ต่อเมื่อแอปของคุณเปิดตัว (เนื่องจากมีการเปลี่ยนสถานที่) หลังจากที่คุณถูกยกเลิก อย่างไรก็ตามย่อหน้าเกี่ยวกับบริการการเปลี่ยนแปลงที่สำคัญในคู่มือการเขียนโปรแกรมการรับรู้ตำแหน่งมีสิ่งต่อไปนี้ที่จะกล่าว: หากคุณปล่อยให้บริการนี้ทำงานและแอปพลิเคชันของคุณถูกระงับหรือยุติในภายหลังบริการจะปลุกแอปพลิเคชันของคุณโดยอัตโนมัติเมื่อมีข้อมูลตำแหน่งใหม่มาถึง เมื่อถึงเวลาปลุกแอปพลิเคชันของคุณจะถูกวางไว้ในพื้นหลังและให้เวลาเล็กน้อยในการประมวลผลข้อมูลตำแหน่ง เนื่องจากแอปพลิเคชันของคุณทำงานอยู่เบื้องหลังจึงควรทำงานน้อยที่สุดและหลีกเลี่ยงงานใด ๆ (เช่นการสืบค้นเครือข่าย) ที่อาจป้องกันไม่ให้กลับมาก่อนเวลาที่จัดสรรไว้จะหมดลง หากไม่เป็นเช่นนั้นใบสมัครของคุณอาจถูกยกเลิก สิ่งนี้แสดงว่าคุณถูกปลุกด้วยข้อมูลตำแหน่งหากแอปของคุณถูกระงับ แต่ไม่ได้ระบุว่าคุณตื่นขึ้นมาอย่างไร: ที่ไม่UIApplicationDelegateได้รับการติดต่อกลับบอกฉันว่าฉันกำลังกลับมาจากสถานะที่ถูกระงับในสภาพพื้นหลัง? ผู้จัดการสถานที่ (ซึ่งถูกทำให้แห้งเมื่อแอปถูกระงับ) เริ่มรับlocationManager: didUpdateToLocation: fromLocation callbacks หรือไม่ ฉันต้องติดตั้งโค้ดในข้อความdidUpdateToLocationของฉันซึ่งจะตรวจสอบสถานะแอปพลิเคชันและทำการประมวลผลน้อยที่สุดหากอยู่ในโหมดพื้นหลังหรือไม่ ในขั้นตอนการเขียนสิ่งนี้ฉันคิดว่าฉันอาจจะเพิ่งตอบคำถามของตัวเอง แต่มันจะดีมากถ้ามีคนที่มีความรู้มากกว่านี้มายืนยันความเข้าใจของฉัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.