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