Android разрешения в Unity
Чтобы получить разрешение на доступ к функциям устройства или данным за пределами песочницы приложения Unity, существует два этапа:
- Во время сборки объявьте разрешение в манифесте приложения Android Манифест приложения.
- Во время выполнения запрашивать разрешение у пользователя.
Для некоторых разрешений Unity автоматически обрабатывает как записи манифеста приложения Android времени сборки, так и запросы разрешений времени выполнения. Дополнительные сведения см. в разделе Разрешения, обрабатываемые Unity.
Заявление разрешений
Приложение Android может запрашивать у пользователя разрешение на использование только тех функций устройства или данных, которые оно объявило в манифесте приложения Android. Это этап обработки разрешений Android во время сборки. Сведения о том, как объявить разрешения, см. в разделе Объявление разрешений для приложения.
Примечание: Если плагин объявляет разрешение в своем манифесте приложения Android, Gradle автоматически добавляет разрешение в окончательный манифест приложения Android на этапе слияния Gradle
Разрешения времени выполнения
Вы можете запрашивать разрешения времени выполнения в любое время во время работы приложения. Наиболее оптимально запрашивать разрешение на доступ к ограниченным данным или функции устройства, когда приложение впервые запрашивает данные/функцию. Перед отправкой запроса следует также показать пользователю сообщение, в котором объясняется, почему приложение запрашивает данные/функцию. Это важно для того, чтобы пользователи знали контекст и не отказывались от разрешения из-за путаницы.
Сведения о запросе разрешений во время выполнения см. в разделе Запрос разрешений во время выполнения.
Важно: Если вы пытаетесь запросить у пользователя разрешение, которое не объявлено в манифесте приложения Android, устройство не отображает диалог разрешений.
Unity-обрабатываемые разрешения
В зависимости от Настройки Игрока и Unity APIs используемые приложением, Unity автоматически добавляет некоторые требуемые разрешения к Android App Manifest и отправляет запросы на разрешение во время выполнения. Это также относится к любым плагинам, используемым приложением.
Чтобы запретить Unity автоматически отправлять запросы на разрешения во время выполнения, добавьте unityplayer.SkipPermissionsDialog в манифест приложения Android. Это полезно, если вы хотите предоставить информацию о том, почему приложение требует каждое разрешение, прежде чем пользователь увидит запрос на разрешение. В этом случае необходимо отправить запросы на разрешение вручную. Дополнительные сведения см. в разделе Запрос разрешений на время выполнения.
В следующем списке объясняется, какие разрешения Unity обрабатывает автоматически:
- Если приложение использует вибрацию, например Handheld.Vibrate, Unity добавляет разрешение
VIBRATEв манифест приложения Android. - Если приложение использует свойство Application.internetReachability, Unity добавляет разрешение
ACCESS_NETWORK_STATEв манифест приложения Android. - Если приложение использует местоположение API, например LocationService, Unity добавляет разрешение
ACCESS_FINE_LOCATIONв манифест приложения Android и запрашивает разрешение у пользователя при первом использовании местоположения приложением. - Если приложение использует WebCamTexture класс, который Unity добавляет
CAMERAразрешение на манифест приложения Android и запрашивает разрешение у пользователя при первом использовании приложенияWebCamTexture. - Если приложение использует Microphone класс добавляет
RECORD_AUDIOразрешение на манифест приложения Android и запрашивает разрешение у пользователя при первом использовании приложенияMicrophone.