이 페이지에서는 백그라운드 위치 정보 액세스 권한을 요청하고 관리하는 권장사항을 설명합니다.
'항상 허용' 위치 정보 액세스 권한 요청
Android 14부터 앱에 ACCESS_BACKGROUND_LOCATION 권한이 있어야 사용자의 위치에 액세스할 수 있습니다.
Navigation SDK는 매니페스트 파일에 이 권한을 포함하므로 Gradle 매니페스트 병합 도구가 앱의 매니페스트와 병합되도록 보장하므로 다른 목적으로 필요하지 않은 경우 명시적으로 요청할 필요가 없습니다.
그러나 ACCESS_BACKGROUND_LOCATION 권한만으로는 백그라운드에서 위치에 액세스할 수 없으므로 사용자에게 '항상 허용' 위치 정보 액세스 권한을 요청하는 것이 좋습니다. 이렇게 하면 앱이 백그라운드에서 실행되고 알림을 표시할 수 있으므로 내비게이션 중에 위치 정확성이 극대화됩니다.
프롬프트는 권한을 부여하면 앱이 백그라운드에서 실행될 때 위치 정확도가 향상되고 탐색 환경이 개선되는 방식을 사용자에게 설명해야 합니다.
사용자에게 위치 정보 액세스 권한을 요청하는 방법에 관한 자세한 내용은 Android 개발자 문서의 위치 정보 액세스 권한 요청 | 센서 및 위치 | Android 개발자를 참고하세요.
내비게이션 알림이 제대로 삭제되는지 확인
앱에서 더 이상 필요하지 않은 알림을 유지하지 않도록 하려면 다음 정리 단계를 실행해야 합니다.
startGuidance()를 호출한 후에는stopGuidance()또는clearDestination()를 호출해야 합니다.ArrivalListener를 등록한 후 등록을 취소해야 합니다.RoadSnappedLocationProvider를 등록한 후 등록을 취소해야 합니다.
이 단계를 완료하면 알림이 더 이상 필요하지 않을 때 알림이 유지되지 않으므로 배터리 소모와 메모리 누수가 발생할 수 있습니다.
NavigationApi#initForegroundServiceManager 메서드를 다시 호출할 때 먼저 NavigationApi#clearForegroundServiceManager를 호출합니다.
앱에서 ForegroundServiceManager를 사용하는 경우 NavigationApi#initForegroundServiceManagerProvider를 호출하기 전에 NavigationApi#clearForegroundServiceManager를 호출하고, 이미 ForegroundServiceManager를 초기화한 경우 NavigationApi#initForegroundServiceManagerMessageAndIntent를 호출합니다. 포그라운드 서비스 관리자를 초기화한 후 알림 ID 또는 알림 콘텐츠를 업데이트할 수 있습니다.
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는 AndroidManifest에 ACCESS_BACKGROUND_LOCATION 권한을 포함합니다. 이렇게 하면 Gradle 병합에서 처리하므로 앱에서 권한 자체를 선언할 필요가 없습니다. 하지만 앱이 백그라운드로 전환되기 전에 사용자에게 알림이 표시되지 않으면 Navigation SDK는 시스템을 사용하여 위치 업데이트를 제공합니다. 이러한 시스템 업데이트는 빈도가 낮거나 정확하지 않을 수 있으며, 이로 인해 최적의 탐색 환경을 제공하지 못할 수 있습니다. 따라서 사용자에게 백그라운드 위치 정보 액세스 권한을 요청하는 것이 좋습니다.
앱 개발자가 내비게이션의 위치 정확도를 개선하기 위해 할 수 있는 일
앱을 업데이트하여 사용자에게 백그라운드 위치 정보 액세스 권한을 요청하면 Navigation SDK에서 사용하는 위치 신호의 정확성을 개선할 수 있습니다. 자세한 내용은 '항상 허용' 위치 정보 액세스 권한 요청을 참고하세요.