Các phương pháp hay nhất về việc sử dụng quyền truy cập thông tin vị trí ở chế độ nền

Trang này giải thích các phương pháp hay nhất để yêu cầu và quản lý quyền sử dụng thông tin vị trí ở chế độ nền.

Yêu cầu quyền truy cập vị trí "Luôn cho phép"

Kể từ Android 14, ứng dụng phải có quyền ACCESS_BACKGROUND_LOCATION để truy cập vào thông tin vị trí của người dùng. SDK điều hướng bao gồm quyền này trong tệp kê khai, vì vậy, bạn không cần phải yêu cầu quyền này một cách rõ ràng (nếu không cần cho các mục đích khác), vì trình hợp nhất tệp kê khai Gradle sẽ đảm bảo quyền này được hợp nhất với tệp kê khai của ứng dụng.

Tuy nhiên, việc có quyền ACCESS_BACKGROUND_LOCATION là chưa đủ để truy cập thông tin vị trí ở chế độ nền và bạn nên yêu cầu người dùng cấp quyền truy cập vị trí "Luôn cho phép". Điều này đảm bảo rằng ứng dụng có thể chạy trong nền và hiển thị thông báo, giúp tối đa hoá độ chính xác của vị trí trong quá trình đi theo chỉ dẫn.

Lời nhắc này sẽ giải thích cho người dùng biết việc cấp quyền sẽ cải thiện độ chính xác của vị trí và trải nghiệm chỉ đường như thế nào khi ứng dụng chạy ở chế độ nền.

hộp thoại quyền mẫu

Để biết thêm thông tin về cách nhắc người dùng cấp quyền truy cập thông tin vị trí, hãy xem phần Yêu cầu quyền truy cập thông tin vị trí | Cảm biến và vị trí | Nhà phát triển Android trong tài liệu dành cho nhà phát triển Android.

Đảm bảo dọn dẹp đúng cách các thông báo điều hướng

Để đảm bảo rằng ứng dụng của bạn không duy trì thông báo sau khi không còn cần thiết, hãy nhớ thực hiện các bước dọn dẹp sau:

  • Sau khi gọi startGuidance(), hãy nhớ gọi stopGuidance() hoặc clearDestination().
  • Sau khi đăng ký ArrivalListener, hãy nhớ huỷ đăng ký.
  • Sau khi đăng ký RoadSnappedLocationProvider, hãy nhớ huỷ đăng ký.

Việc hoàn tất các bước này đảm bảo rằng thông báo không được duy trì khi không còn cần thiết, điều này có thể dẫn đến hao pin và có thể rò rỉ bộ nhớ.

Khi gọi lại các phương thức NavigationApi#initForegroundServiceManager, hãy gọi NavigationApi#clearForegroundServiceManager trước

Nếu ứng dụng của bạn đang sử dụng ForegroundServiceManager, hãy gọi NavigationApi#clearForegroundServiceManager trước khi gọi NavigationApi#initForegroundServiceManagerProvider. Nếu bạn đã khởi chạy ForegroundServiceManager, hãy gọi NavigationApi#initForegroundServiceManagerMessageAndIntent. Bạn có thể làm việc này để cập nhật mã nhận dạng thông báo hoặc nội dung thông báo sau khi khởi chạy trình quản lý dịch vụ nền trước.

Giới thiệu về các quy định hạn chế mới trong Android 14

Android 14 (Android U) đã đưa ra các quy định hạn chế mới đối với những ứng dụng truy cập thông tin vị trí của người dùng ở chế độ nền. Để giúp giảm nhẹ những thay đổi này, SDK Điều hướng đã được cập nhật trong phiên bản 5.4.0 để quản lý quyền truy cập vị trí ở nền sau hiệu quả hơn. Bạn cũng nên cập nhật phương thức triển khai để đảm bảo ứng dụng của bạn tiếp tục có quyền truy cập vào dữ liệu vị trí chính xác nhất.

Những thay đổi trong Android 14 ảnh hưởng như thế nào đến Navigation SDK

Khi bạn gọi startGuidance() trong ứng dụng, dịch vụ nền trước sẽ bắt đầu hiển thị thông báo cho người dùng về tính năng đường đi từng chặng. Tính năng đường đi từng chặng phụ thuộc vào khả năng truy cập thông tin vị trí của người dùng để cập nhật tuyến đường và hiển thị hướng dẫn bằng hình ảnh và âm thanh chính xác. Kể từ Android 14, bạn phải được người dùng cấp quyền thì mới có thể truy cập vào thông tin vị trí chính xác của người dùng ở chế độ nền. Theo mặc định, nếu một ứng dụng không có quyền truy cập vị trí ở nền sau của người dùng và cố gắng bắt đầu một dịch vụ nền trước để thông báo cập nhật vị trí, thì hệ thống sẽ gửi một SecurityException, khiến ứng dụng gặp sự cố.

Cách Navigation SDK giảm thiểu vấn đề này

Kể từ phiên bản 5.4.0, SDK Điều hướng sẽ xử lý vấn đề này SecurityException mà không ảnh hưởng đến ứng dụng, cho phép tính năng điều hướng tiếp tục chạy ở chế độ nền. Ngoài ra, SDK điều hướng còn có quyền ACCESS_BACKGROUND_LOCATION trong AndroidManifest. Bằng cách này, ứng dụng của bạn không cần tự khai báo quyền vì việc hợp nhất Gradle sẽ xử lý quyền đó. Tuy nhiên, nếu người dùng không thấy thông báo trước khi ứng dụng chuyển sang chế độ nền, thì SDK điều hướng sẽ dựa vào hệ thống để cung cấp thông tin cập nhật vị trí. Những bản cập nhật hệ thống này có thể không thường xuyên hoặc không chính xác, dẫn đến trải nghiệm chỉ đường không tối ưu. Vì lý do này, chúng tôi cũng đề xuất bạn nhắc người dùng cấp quyền truy cập vị trí ở nền sau.

Những việc nhà phát triển ứng dụng có thể làm để cải thiện độ chính xác của vị trí cho tính năng chỉ đường

Bạn có thể cải thiện độ chính xác của tín hiệu vị trí mà SDK điều hướng sử dụng bằng cách cập nhật ứng dụng để nhắc người dùng cấp quyền truy cập vị trí ở nền sau. Để biết thêm thông tin, hãy xem phần Yêu cầu quyền truy cập thông tin vị trí "Luôn cho phép".