แนวทางปฏิบัติแนะนำในการใช้ตำแหน่งในเบื้องหลัง

หน้านี้อธิบายแนวทางปฏิบัติแนะนำสำหรับการขอและจัดการสิทธิ์การใช้งานตำแหน่งในเบื้องหลัง

ขอสิทธิ์เข้าถึงตำแหน่งแบบ "อนุญาตตลอด"

ตั้งแต่ Android 14 เป็นต้นไป แอปต้องมีสิทธิ์ ACCESS_BACKGROUND_LOCATION เพื่อเข้าถึงตำแหน่งของผู้ใช้ Navigation SDK มีสิทธิ์นี้ในไฟล์ Manifest คุณจึงไม่จำเป็นต้องขอสิทธิ์อย่างชัดแจ้ง (หากไม่จำเป็นสำหรับวัตถุประสงค์อื่นๆ) เนื่องจากเครื่องมือผสานไฟล์ Manifest ของ Gradle จะผสานสิทธิ์นี้กับไฟล์ Manifest ของแอป

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

ข้อความแจ้งควรอธิบายให้ผู้ใช้ทราบว่าการให้สิทธิ์จะช่วยปรับปรุงความแม่นยำของตำแหน่งและปรับปรุงประสบการณ์การนำทางเมื่อแอปทำงานอยู่เบื้องหลังได้อย่างไร

กล่องโต้ตอบตัวอย่างสิทธิ์

ดูข้อมูลเพิ่มเติมเกี่ยวกับการแจ้งให้ผู้ใช้เข้าถึงตำแหน่งได้ที่ขอสิทธิ์เข้าถึงตำแหน่ง | เซ็นเซอร์และตำแหน่ง | นักพัฒนาแอป Android ในเอกสารประกอบสำหรับนักพัฒนาแอป Android

ตรวจสอบว่ามีการล้างการแจ้งเตือนการนำทางอย่างเหมาะสม

โปรดทำตามขั้นตอนการล้างข้อมูลต่อไปนี้เพื่อให้มั่นใจว่าแอปจะไม่แสดงการแจ้งเตือนหลังจากที่ไม่จำเป็นต้องใช้แล้ว

  • หลังจากเรียกใช้ startGuidance() แล้ว อย่าลืมเรียกใช้ stopGuidance() หรือ clearDestination() ด้วย
  • หลังจากลงทะเบียน ArrivalListener แล้ว อย่าลืมยกเลิกการลงทะเบียน
  • หลังจากลงทะเบียน RoadSnappedLocationProvider แล้ว อย่าลืมยกเลิกการลงทะเบียน

การทำตามขั้นตอนเหล่านี้จะช่วยให้มั่นใจได้ว่าระบบจะไม่เก็บการแจ้งเตือนไว้เมื่อไม่จำเป็นต้องใช้แล้ว ซึ่งอาจทำให้แบตเตอรี่หมดเร็วและอาจทำให้หน่วยความจำรั่วไหลได้

เมื่อเรียกใช้เมธอด NavigationApi#initForegroundServiceManager อีกครั้ง ให้เรียกใช้ NavigationApi#clearForegroundServiceManager ก่อน

หากแอปใช้ ForegroundServiceManager ให้เรียกใช้ NavigationApi#clearForegroundServiceManager ก่อนเรียกใช้ NavigationApi#initForegroundServiceManagerProvider และหากคุณได้เริ่มต้น ForegroundServiceManager แล้ว ให้เรียกใช้ NavigationApi#initForegroundServiceManagerMessageAndIntent คุณสามารถทำเช่นนี้เพื่ออัปเดตรหัสการแจ้งเตือนหรือเนื้อหาการแจ้งเตือนหลังจากที่เริ่มต้นใช้งานตัวจัดการบริการที่ทำงานอยู่เบื้องหน้าแล้ว

เกี่ยวกับข้อจำกัดใหม่ที่เปิดตัวใน Android 14

Android 14 (Android U) ได้เปิดตัวข้อจำกัดใหม่เกี่ยวกับแอปที่เข้าถึงตำแหน่งของผู้ใช้ในเบื้องหลัง เพื่อช่วยลดผลกระทบจากการเปลี่ยนแปลงเหล่านี้ Navigation SDK ได้รับการอัปเดตในเวอร์ชัน 5.4.0 เพื่อจัดการการเข้าถึงตำแหน่งในเบื้องหลังได้ดียิ่งขึ้น นอกจากนี้ เราขอแนะนำให้อัปเดตการติดตั้งใช้งานเพื่อให้แอปของคุณยังคงเข้าถึงข้อมูลตำแหน่งที่แม่นยำที่สุดได้

การเปลี่ยนแปลงใน Android 14 ส่งผลต่อ Navigation SDK อย่างไร

เมื่อคุณเรียกใช้ startGuidance() ในแอป บริการที่ทำงานอยู่เบื้องหน้าจะเริ่มแสดงการแจ้งเตือนผู้ใช้สำหรับการนำทางแบบเลี้ยวต่อเลี้ยว การนำทางแบบเลี้ยวต่อเลี้ยวขึ้นอยู่กับความสามารถในการเข้าถึงตำแหน่งของผู้ใช้เพื่ออัปเดตเส้นทางและแสดงคำแนะนำด้วยภาพและเสียงที่ถูกต้อง ตั้งแต่ Android 14 เป็นต้นไป การเข้าถึงตำแหน่งที่แน่นอนของผู้ใช้ในเบื้องหลังต้องได้รับสิทธิ์จากผู้ใช้ โดยค่าเริ่มต้น หากแอปไม่ได้รับสิทธิ์จากผู้ใช้ในการเข้าถึงตำแหน่งในเบื้องหลังและพยายามเริ่มบริการที่ทำงานอยู่เบื้องหน้าเพื่อการอัปเดตตำแหน่ง ระบบจะแสดง SecurityException ซึ่งทำให้แอปขัดข้อง

วิธีที่ Navigation SDK บรรเทาปัญหานี้

ตั้งแต่เวอร์ชัน 5.4.0 เป็นต้นไป Navigation SDK จะจัดการSecurityExceptionนี้โดยไม่ส่งผลกระทบต่อแอป ซึ่งช่วยให้การนำทางทำงานในเบื้องหลังต่อไปได้ นอกจากนี้ Navigation SDK ยังมีสิทธิ์ ACCESS_BACKGROUND_LOCATION ใน AndroidManifest ด้วย วิธีนี้ช่วยให้แอปของคุณไม่ต้องประกาศสิทธิ์เอง เนื่องจาก Gradle Merging จะจัดการให้ อย่างไรก็ตาม หากไม่มีการแสดงการแจ้งเตือนแก่ผู้ใช้ก่อนที่แอปจะทำงานในเบื้องหลัง Navigation SDK จะอาศัยระบบในการอัปเดตตำแหน่ง การอัปเดตระบบเหล่านี้อาจไม่เกิดขึ้นบ่อยครั้งหรือไม่แม่นยำ และส่งผลให้ประสบการณ์การนำทางไม่ดีเท่าที่ควร ด้วยเหตุนี้ เราขอแนะนำให้คุณแจ้งผู้ใช้เพื่อขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหลังด้วย

สิ่งที่นักพัฒนาแอปทำได้เพื่อปรับปรุงความแม่นยำของตำแหน่งสำหรับการนำทาง

คุณสามารถปรับปรุงความแม่นยำของสัญญาณตำแหน่งที่ Navigation SDK ใช้ได้โดยอัปเดตแอปให้แจ้งผู้ใช้เพื่อขอสิทธิ์เข้าถึงตำแหน่งในเบื้องหลัง ดูข้อมูลเพิ่มเติมได้ที่ขอสิทธิ์เข้าถึงตำแหน่งแบบ "อนุญาตตลอด"