본문 바로가기

안드로이드/팁

[And] 백그라운드 위치 권한 사용하기 ( Android9,10 대응 )

반응형

※백그라운드 위치정보는 TargetSdk가 아닌 앱이 깔린 디바이스의 소프트웨어 버전에 따라 동작이 다릅니다.

 

앱이 백그라운드에 있을때도 디바이스의 위치 정보를 사용하기 위해선 별도 권한을 추가해야 하며 이 포스팅은 Android9이상 부터 추가된 'ACCESS_BACKGROUND_LOCATION' 권한을 중점으로 작성됐습니다. 공식 문서를 참고하여 작성했습니다. 

 

Android9 이하  

별도 권한 없이 위치 권한만 있으면 사용은 가능합니다. 하지만 오레오 버전부터 백그라운드 서비스를 일부 제한하면서 ( 시간당 호출수 제한 ) 백그라운드에서 위치 정보를 얻어 앱에 활용하는건 어려워졌습니다. 

백그라운드 서비스가 오래 지속되지 않기 때문에 단발성 기능이 아닌 이상 사용 불가라고 보는게 맞을것 같습니다.

 

Android 10 

29버전부터 권한 요청시 '앱 사용 중에만 허용' 옵션이 추가돼 앱을 사용중일때만 정보를 얻을 수 있도록 변경 됐습니다.

위치 권한의 경우 Androidmanifest.xml 파일에 'ACCESS_BACKGROUND_LOCATION' 권한을 추가해야 요청시 '항상 허용' 옵션이 추가 되도록 변경 됐습니다.  

그림1

Android 11 ( TargetSdk 29 ) 

'ACCESS_BACKGROUND_LOCATION' 권한을 요청해도 '항상 허용' 옵션이 추가되지 않고 설정에서 직접 허용하도록 유도하는 팝업이 뜹니다.

그림2

그림2에서 '설정에서 액세스를 허용'을 클릭하면 그림3 화면으로 이동합니다.

그림3

 구글에서는 사용자가 백그라운드 위치 권한이 필요한 기능을 이용할때 권한에 대한 설명 팝업(dialog등)을 띄우고 수락을 했을 경우 그림3과 같은 권한 상세 화면으로 이동하길 권고하고 있습니다.  그리고 위치권한이 이미 허용되어 있는 상태에서 'ACCESS_BACKGROUND_LOCATION' 권한을 요청하면 그림4와 같은 팝업이 노출됩니다. 

그림4

Android 11 ( TargetSdk 30 ) 

권한 요청시 'ACCESS_BACKGROUND_LOCATION' 을 위치 권한과 함께 요청하면 권한 요청 팝업이 노출되지 않습니다. 

위치 권한이 승인된 상태에서 별도로 'ACCESS_BACKGROUND_LOCATION'를 요청해야하고, 요청시 그림3화면으로 이동됩니다. 그렇기 때문에 구글에선 권한의 용도를 충분히 설명하고 팝업을 노출하는걸 권고합니다.

| 구글 승인 받기

백그라운드 위치 정보를 앱에서 활용하려면 구글에 승인을 받아야 합니다. 관련 링크는 공식 문서를 참고해주세요. 

꼭 필요한 경우라고 판단될때 승인해준다고 하니깐 잘 고려해서 앱이 삭제되는등의 불이익을 받지 않도록 해야합니다. (신규 앱은 승인 후에 출시가 가능합니다 ) 

| 마무리

targetSdk별, 기기 소프트웨어별 다른 이슈 때문에 한가지 기능을 추가하더라도 고려해야할 사항들이 많습니다. 그리고 그 기능을 추가함으로 실제 사용하는 유저들에게 어떤 이점을 가져다주는지도 고려해봐야 합니다. 

구글에서는 백그라운드 보단 포그라운드 서비스를 이용해 명시적으로 위치 조회등을 하길 권고합니다. 

 

반응형