Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

위치 정보 액세스 권한 요청

사용자 개인정보를 보호하려면 위치 서비스를 사용하는 앱에서 위치 정보 액세스 권한을 요청해야 합니다.

위치 정보 액세스 권한을 요청할 때는 다른 런타임 권한을 요청할 때와 동일한 권장사항을 따르세요. 위치 정보 액세스 권한에 있어 한 가지 중요한 차이점은 시스템에 위치와 관련된 여러 권한이 포함된다는 것입니다. 어떤 권한을 어떻게 요청하는지는 앱 사용 사례의 위치 요구사항에 따라 다릅니다.

이 페이지에서는 다양한 위치 요구사항 유형을 설명하고 각 사례에서 위치 정보 액세스 권한을 요청하는 방법을 안내합니다.

위치 정보 액세스 유형

Android의 위치 정보 액세스 권한은 다음 위치 정보 액세스 카테고리를 다룹니다.

이 섹션에서는 앱에서 각 카테고리를 사용하는 상황을 설명합니다.

포그라운드 위치

앱에 위치 정보를 한 번만 또는 정의된 시간 동안 공유하거나 수신하는 기능이 포함되어 있으면 이 기능에는 포그라운드 위치 정보 액세스 권한이 필요합니다. 몇 가지 예는 다음과 같습니다.

  • 내비게이션 앱 내에서 사용자가 세부 경로 안내를 받을 수 있는 기능
  • 메시지 앱 내에서 사용자가 현재 위치를 다른 사용자와 공유할 수 있는 기능

앱의 기능이 다음 상황 중 하나에서 기기의 현재 위치에 액세스한다면 시스템은 앱에서 포그라운드 위치를 사용하고 있다고 간주합니다.

  • 앱에 속한 활동이 표시됩니다.
  • 앱에서 포그라운드 서비스를 실행하고 있습니다. 포그라운드 서비스를 실행하고 있을 때 시스템은 지속적으로 알림을 표시하여 사용자 인지도를 높입니다. 앱은 사용자가 기기의 버튼을 누르거나 기기 화면을 끌 때와 같이 백그라운드에 배치되면 액세스 권한을 유지합니다.

    또한 다음 코드 스니펫과 같이 location포그라운드 서비스 유형을 선언하는 것이 좋습니다. Android 10(API 수준 29)에서는 이 포그라운드 서비스 유형을 선언해야 합니다.

    <!-- Recommended for Android 9 (API level 28) and lower. -->
    <!-- Required for Android 10 (API level 29). -->
    <service
        android:name="MyNavigationService"
        android:foregroundServiceType="location" ... >
        <!-- Any inner elements would go here. -->
    </service>
    

다음 스니펫과 같이 앱에서 ACCESS_COARSE_LOCATION 권한이나 ACCESS_FINE_LOCATION 권한을 요청하면 포그라운드 위치의 필요성을 선언합니다.

<manifest ... >
  <!-- To request foreground location access, declare one of these permissions. -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

정밀도 수준은 요청하는 권한에 따라 다릅니다.

ACCESS_COARSE_LOCATION
도시 블록 내에 위치 정확성을 제공합니다.
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION을 요청할 때 제공되는 위치보다 더 정확한 위치를 제공합니다. 이 권한은 저전력 블루투스(BLE)를 통해 근처 기기에 연결과 같은 일부 연결 작업에 필요합니다.

백그라운드 위치

앱 내 기능이 지속적으로 다른 사용자와 위치를 공유하거나 Geofencing API를 사용하는 경우 앱에는 백그라운드 위치 정보 액세스 권한이 필요합니다. 몇 가지 예는 다음과 같습니다.

  • 가족 위치 공유 앱 내에서 사용자가 가족 구성원과 지속적으로 위치를 공유할 수 있는 기능
  • IoT 앱 내에서 사용자가 집을 나갈 때 꺼지고 집에 돌아올 때 다시 켜지도록 홈 기기를 구성할 수 있는 기능

시스템은 앱이 포그라운드 위치 섹션에서 설명된 상황 이외의 모든 상황에서 기기의 현재 위치에 액세스한다면 앱에서 백그라운드 위치를 사용하고 있다고 간주합니다.

Android 10(API 수준 29)에서 개발자는 런타임 시 백그라운드 위치 정보 액세스 권한을 요청하기 위해 앱 매니페스트에서 ACCESS_BACKGROUND_LOCATION 권한을 선언해야 합니다. 이전 버전의 Android에서는 앱이 포그라운드 위치 정보 액세스 권한을 수신하면 자동으로 백그라운드 위치 정보 액세스 권한도 수신합니다.

<manifest ... >
  <!-- Required only when requesting background location access on
       Android 10 (API level 29). -->
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>

런타임 시 위치 정보 액세스 권한 요청

앱의 기능에 위치 정보 액세스 권한이 필요하다면 사용자가 이 기능과 상호작용할 때까지 기다린 후 권한을 요청합니다. 이 워크플로는 앱 권한 요청 방법을 설명하는 가이드에 설명된 대로 컨텍스트에서 런타임 권한을 요청하는 것에 대한 권장사항을 따릅니다.

그림 1은 이 프로세스를 실행하는 방법의 예를 보여줍니다. 앱에는 포그라운드 위치 정보 액세스 권한이 필요한 '위치 공유' 기능이 포함되어 있습니다. 그러나 앱은 사용자가 위치 공유 버튼을 선택할 때까지 위치 정보 액세스 권한을 요청하지 않습니다.

사용자가 위치 공유 버튼을 선택한 후 시스템의 위치 정보 액세스 권한 대화상자가 표시됩니다.
그림 1. 포그라운드 위치 정보 액세스 권한이 필요한 위치 공유 기능. 이 기능은 사용자가 앱 사용 중에만 허용을 선택하면 사용 설정됩니다.

앱의 여러 기능에 위치 정보 액세스 권한이 필요하더라도 이 중 일부 기능에만 백그라운드 위치 정보 액세스 권한이 필요할 수 있습니다. 따라서 앱은 포그라운드 위치 정보 액세스 권한을 요청한 다음 백그라운드 위치 정보 액세스 권한을 요청하여 위치 정보 액세스 권한의 점진적 요청을 실행하는 것이 좋습니다. 점진적 요청을 실행하면 사용자가 앱의 어떤 기능에 백그라운드 위치 정보 액세스 권한이 필요한지 더 잘 파악할 수 있으므로 사용자에게 더 많은 컨트롤과 투명성을 제공합니다.

그림 2는 점진적 요청을 처리하도록 설계된 앱의 예를 보여줍니다. '현재 위치 표시' 및 '주변 장소 추천' 기능에는 모두 포그라운드 위치 정보 액세스 권한이 필요합니다. 그러나 '주변 장소 추천' 기능에만 백그라운드 위치 정보 액세스 권한이 필요합니다.

포그라운드 위치 정보 액세스 권한을 사용 설정하는 버튼은 백그라운드 위치를 사용 설정하는 버튼에서 화면 절반 길이만큼 떨어져 배치됩니다.
그림 2. 두 기능에 모두 위치 정보 액세스 권한이 필요하지만 '주변 장소 추천' 기능에만 백그라운드 위치 정보 액세스 권한이 필요합니다.

점진적 요청을 실행하는 프로세스는 다음과 같습니다.

  1. 먼저 앱은 그림 1의 '위치 공유' 기능이나 그림 2의 '현재 위치 표시' 기능과 같이 포그라운드 위치 정보 액세스 권한이 필요한 기능으로 사용자를 안내해야 합니다.

    앱에 포그라운드 위치 정보 액세스 권한이 있을 때까지 백그라운드 위치 정보 액세스 권한이 필요한 기능에 대한 사용자 액세스를 사용 중지하는 것이 좋습니다.

  2. 대화상자에는 백그라운드 위치 정보 액세스 권한을 부여하거나 포그라운드 위치 정보 액세스 권한을 유지하는 옵션이 포함되어 있습니다.
    그림 3. 앱에 포그라운드 위치 정보 액세스 권한이 부여되었다면 이 대화상자는 앱에서 백그라운드 위치 정보 액세스 권한을 요청할 때 표시됩니다.

    나중에 사용자가 백그라운드 위치 정보 액세스 권한이 필요한 기능을 살펴볼 때 백그라운드 위치 정보 액세스 권한을 요청할 수 있습니다. 시스템은 그림 3과 유사한 대화상자를 표시합니다.

    사용자가 백그라운드 위치 정보 액세스 권한을 부여한 후 앱의 기능이 백그라운드에서 기기 위치에 처음 액세스하면 시스템은 사용자에게 전송할 알림을 예약합니다. 이 알림은 사용자에게 앱이 기기 위치에 항상 액세스하도록 허용했음을 알립니다. 알림 예는 그림 4에 표시됩니다.

    사용자는 시스템 알림을 탭하여 앱의 위치 설정을 변경할 수 있습니다.
    그림 4. 사용자가 앱에 백그라운드 위치 정보 액세스 권한을 부여했다고 사용자에게 알리는 알림