기기 기능이나 Unity 애플리케이션 샌드박스 외부의 데이터에 액세스하는 권한을 얻으려면 다음과 같이 두 가지 단계가 있습니다.
일부 권한의 경우 Unity는 빌드 시간 Android 앱 매니페스트 엔트리와 런타임 권한 요청 모두를 처리합니다. 자세한 내용은 Unity에서 처리하는 권한을 참조하십시오.
Android 애플리케이션은 해당 Android 앱 매니페스트에 선언된 기기 기능이나 데이터를 사용할 권한만 사용자에게 요청합니다. 이는 Android 권한 처리에 관한 빌드 시간 단계입니다. 권한을 선언하는 방법에 대한 자세한 내용은 애플리케이션에 대한 권한 선언을 참조하십시오.
참고: 플러그인이 해당 Android 앱 매니페스트에 권한을 선언하는 경우 Gradle은 Gradle 병합 단계 동안 권한을 최종 Android 앱 매니페스트에 자동으로 추가합니다.
애플리케이션을 실행하는 동안 언제든 런타임 권한을 요청할 수 있습니다. 애플리케이션이 처음으로 데이터/기능을 요청할 때 제한된 데이터나 기기 기능에 대한 권한을 요청하는 것이 가장 좋습니다. 또한 요청을 전송하기 전에 애플리케이션이 데이터/기능을 요청하는 이유를 설명하는 메시지를 사용자에게 표시해야 합니다. 이는 사용자에게 컨텍스트를 제공하여 혼란으로 인해 권한을 거부할 가능성을 줄여주므로 중요합니다.
런타임 시 권한을 요청하는 방법에 대한 자세한 내용은 런타임 권한 요청을 참조하십시오.
중요: 사용자에게 Android 앱 매니페스트가 선언하지 않은 권한을 요청하려는 경우 기기는 권한 다이얼로그를 표시하지 않습니다.
플레이어 설정과 애플리케이션이 사용하는 Unity API에 따라 Unity는 Android 앱 매니페스트에 일부 필수 권한을 자동으로 추가하고 런타임 시 권한 요청을 전송합니다. 이는 애플리케이션이 사용하는 모든 플러그인에도 적용됩니다.
Unity가 런타임 시 자동으로 권한 요청을 전송하지 않게 하려면 unityplayer.SkipPermissionsDialog
를 Android 앱 매니페스트에 추가합니다. 사용자가 권한 요청을 확인하기 전에 애플리케이션이 각 권한을 요청한 이유에 관한 정보를 제공하고자 하는 경우 유용합니다. 이런 경우에는 권한 요청을 수동으로 전송해야 합니다. 자세한 내용은 런타임 권한 요청을 참조하십시오.
다음 리스트에서는 Unity가 자동으로 처리하는 권한을 설명합니다.
INTERNET
권한을 Android 앱 매니페스트에 추가하고 애플리케이션이 처음으로 Network
를 사용할 때 사용자에게 권한을 요청합니다.VIBRATE
권한을 추가하고 애플리케이션이 진동을 처음으로 사용할 때 사용자에게 권한을 요청합니다.ACCESS_NETWORK_STATE
권한을 Android 앱 매니페스트에 추가하고 애플리케이션이 처음으로 Application.InternetReachability
를 사용할 때 사용자에게 권한을 요청합니다.ACCESS_FINE_LOCATION
권한을 Android 앱 매니페스트에 추가하고 애플리케이션이 처음으로 위치를 사용할 때 사용자에게 권한을 요청합니다.CAMERA
권한을 Android 앱 매니페스트에 추가하고 애플리케이션이 처음으로 WebCamTexture
를 사용할 때 사용자에게 권한을 요청합니다.RECORD_AUDIO
권한을 Android 앱 매니페스트에 추가하고 애플리케이션이 처음으로 Microphone
을 사용할 때 사용자에게 권한을 요청합니다.