사용자 개인 정보를 보호하려면 위치 서비스를 사용하는 앱에서 위치 정보 액세스 권한을 요청해야 합니다. 안드로이드에서는 Location Permission은 ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION, ACCESS_BACKGROUND_LOCATION을 제공합니다. 기존 ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION퍼미션에서 Android 10부터 추가적으로 ACCESS_BACKGROUND_LOCATION가 추가 되었습니다.
- ACCESS_COARSE_LOCATION
도시 블록 내에 위치 정확성을 제공합니다. - ACCESS_FINE_LOCATION
COARSE_LOCATION 보다 정확한 위치를 제공합니다. 이 권한은 BLE와 기기의 연결 같은 특정 작업에 필요합니다. - ACCESS_BACKGROUND_LOCATION
백그라운드에서도 위치정보를 수집하는 경우에 추가가 필요한 퍼미션입니다.
위치정보는 상황별로 포어그라운드 위치와 백그라운드 위치로 나뉩니다.
포어그라운드 위치
기존의 위치 퍼미션(ACCESS_FINE_LOCATION 또는 ACCESS_COARSE_LOCATION)은 앱이 포어그라운드 상태로 실행 중인 경우에만 위치 정보를 얻을 수 있습니다. 앱에 위치정보를 한 번만 또는 정의된 시간 동안 공유하거나 수신하는 기능이 포함되어 있으면 이 기능에는 포그라운드 위치 정보 액세스 권한이 필요합니다.
- 내비게이션 앱 내에서 사용자가 세부 경로 안내를 받을 수 있는 기능
- 메시지 앱 내에서 사용자가 현재 위치를 다른 사용자와 공유할 수 있는 기능
포어그라운드 서비스에서 위치 정보를 얻어야 한다면, 추가로 권한을 요청할 필요는 없지만 별도의 세팅을 해줘야 합니다.
<!-- Recommended for Android 9 (API level 28) and lower. -->
<!-- Required for Android 10 (API level 29) and higher. -->
<service
android:name="MyNavigationService"
android:foregroundServiceType="location" ... >
<!-- Any inner elements would go here. -->
</service>
백그라운드 위치
앱 내 기능이 지속적으로 다른 사용자와 위치를 공유하는 경우에는 백그라운드 위치 정보 권한이 필요합니다. Android 10(API 수준 29) 이상에서 개발자는 런타임 시 백그라운드 위치 정보 액세스 권한을 요청하기 위해 앱 매니페스트에서 BACKGROUND 권한을 선언해야 합니다. 이전 버전의 Android에서는 앱에서 ACCESS_FINE_LOCATION 또는 ACCESS_COARSE_LOCATION을 요청하면 자동으로 ACCESS_BACKGROUND_LOCATION을 추가합니다.
<manifest ... >
<!-- Required only when requesting background location access on
Android 10 (API level 29) and higher. -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
앱의 위치정보 권한 요청
Android 10을 타겟으로 하는 기기의 경우 첫번째 그림과 같이 승인 팝업이 뜨게 됩니다.
- 항상 허용
- 앱 사용 중에만 허용
권한 부여 프로세스는 앱의 타겟 SDK 버전에 따라 다릅니다. Android 10(API 수준 29)을 실행하는 기기에서 백그라운드 위치를 요청하면 시스템 권한 대화상자에는 항상 허용이라는 옵션이 포함됩니다. 사용자가 이 옵션을 선택하면 앱의 기능에 백그라운드 위치 정보 액세스 권한이 부여됩니다. 하지만 Android 11(API 수준 30) 이상에서는 시스템 대화상자에 항상 허용 옵션이 포함되지 않습니다.
- 앱 사용 중에만 허용
- 이번만 허용
- 거부
옵션만 존재합니다. 대신 사용자는 설정 페이지에서 백그라운드에서 위치 정보가 필요하다면 Manifest에서 BACKGROUND 권한을 받아서 아래의 이미지의 요구에 따라야 합니다. 또 권한을 거부하더라도 앱 사용에 지장이 없도록 해야 합니다.
Android 10 이상에서는 사용자가 백그라운드 위치 정보 액세스 권한을 부여한 후 앱의 기능이 백그라운드에서 기기 위치에 처음 액세스하면 시스템은 사용자에게 알림을 통해 사용자에게 앱이 기기 위치에 항상 액세스하도록 허용했음을 알립니다.
참고자료
- Android Developer
'Domain > Android' 카테고리의 다른 글
[Android] BLE와 Location Permission (0) | 2021.04.23 |
---|---|
[Android] MediaStore ( Android 11 / Android 버전 대응 / Storage 정책 ) (0) | 2021.04.23 |
[Android] MVC vs. MVP vs. MVVM (0) | 2020.09.21 |
[Android] DataBinding (0) | 2020.09.21 |
[Android] Context란? (0) | 2020.09.08 |
댓글