백그라운드 위치 정보 사용 권장사항

이 페이지에서는 백그라운드 위치 사용 권한을 요청하고 관리하기 위한 권장사항을 설명합니다.

'항상 허용' 위치 정보 액세스 권한 요청

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는 AndroidManifestACCESS_BACKGROUND_LOCATION 권한을 포함합니다. 이렇게 하면 Gradle 병합에서 처리하므로 앱에서 권한 자체를 선언할 필요가 없습니다. 하지만 앱이 백그라운드로 전환되기 전에 사용자에게 알림이 표시되지 않으면 Navigation SDK는 시스템에 의존하여 위치 업데이트를 제공합니다. 이러한 시스템 업데이트는 자주 수행되지 않거나 정확하지 않을 수 있으며 결과적으로 탐색 환경이 최적화되지 않을 수 있습니다. 따라서 사용자에게 백그라운드 위치 정보 액세스 권한을 요청하는 메시지도 표시하는 것이 좋습니다.

앱 개발자가 탐색의 위치 정확도를 개선하기 위해 취할 수 있는 조치

사용자에게 백그라운드 위치 액세스 권한을 요청하는 메시지를 표시하도록 앱을 업데이트하면 Navigation SDK에서 사용하는 위치 신호의 정확성을 개선할 수 있습니다. 자세한 내용은 '항상 허용' 위치 정보 액세스 권한 요청을 참고하세요.