Запрос разрешений на Wear OS

ключевые слова: одежда, разрешения, collection_guideslandingwear путь к изображению: images/training/wear/multiple_permissions.png

Запрос разрешений на Wear OS аналогичен запросу разрешений в мобильных приложениях, но есть несколько дополнительных вариантов использования. В этом документе предполагается, что вы понимаете, как работают разрешения в Android. Если нет, ознакомьтесь с принципами работы разрешений в Android .

Как и в мобильном приложении, пользователь должен предоставить приложению Wear разрешение на доступ к определённым функциям. В своих приложениях Wear предоставляйте значимые функции, не запрашивая никаких разрешений.

Сценарии разрешений

Существует несколько сценариев, с которыми вы можете столкнуться при запросе опасных разрешений в Wear OS:

  • Приложение Wear запрашивает разрешения для приложения, работающего на носимом устройстве.

  • Приложение Wear запрашивает разрешения для приложения, работающего на телефоне.

  • Приложение телефона запрашивает разрешения для приложения, работающего на носимом устройстве.

  • Приложение для телефона запрашивает несколько разрешений, которые можно использовать только при подключенном носимом устройстве.

Чтобы увидеть все эти сценарии в работающем приложении, просмотрите пример ExerciseSampleCompose на GitHub.

В следующих разделах описывается каждый из этих сценариев. Более подробную информацию о запросе разрешений см. в разделе «Шаблоны запросов разрешений» .

Приложение Wear запрашивает разрешение на использование носимых устройств

Когда приложение Wear запрашивает разрешение для приложения, работающего на носимом устройстве, система отображает диалоговое окно с запросом разрешения. В вашем приложении запрашивайте разрешения только тогда, когда пользователю ясно, зачем они нужны для выполнения той или иной операции.

Ознакомьтесь с принципами предоставления разрешений , чтобы убедиться, что вы обеспечиваете наилучший опыт для своих пользователей, и не забудьте проверить shouldShowRequestPermissionRationale() и предоставить дополнительную информацию по мере необходимости.

Если приложению или циферблату требуется более одного разрешения одновременно, запросы на разрешения появляются один за другим.

Несколько экранов разрешений, один за другим.
Рисунок 1. Экраны разрешений, появляющиеся последовательно.

Приложение Wear запрашивает разрешение на использование телефона

Когда приложение Wear запрашивает разрешение на доступ к телефону (например, приложение для носимых устройств запрашивает доступ к фотографиям или другим конфиденциальным данным в мобильной версии приложения), приложение Wear должно перенаправить пользователя на телефон для получения разрешения. Там приложение для телефона может предоставить пользователю дополнительную информацию, используя действие. В этом действии добавьте две кнопки: одну для предоставления разрешения и одну для его отмены.

Приложение Wear отправляет пользователя к телефону для предоставления разрешения.
Рисунок 2. Отправьте пользователя к телефону для предоставления разрешения.

Приложение для телефона запрашивает разрешение на использование носимых устройств

Если пользователь находится в приложении для телефона, и приложение запрашивает разрешение для носимого устройства, например, для предзагрузки музыки на случай отключения телефона, приложение для телефона перенаправляет пользователя на носимое устройство для получения разрешения. Версия приложения для носимых устройств использует метод requestPermissions() для вызова диалогового окна системных разрешений.

Приложение на телефоне направляет пользователя к носимому устройству для предоставления разрешения.
Рисунок 3. Отправьте пользователя на носимое устройство для предоставления разрешения.

Приложение «Телефон» запрашивает несколько разрешений одновременно

Рисунок 4. Диалоговое окно разрешений, которое использует профиль сопутствующего устройства для запроса нескольких разрешений в одном запросе.

Партнерские приложения на Android 12 (уровень API 31) и выше могут использовать профили сопутствующих устройств при подключении к часам. Использование профиля упрощает процесс регистрации, объединяя предоставление набора разрешений, специфичных для типа устройства, в один шаг.

Пакетные разрешения предоставляются сопутствующему приложению после подключения устройства и действуют только пока устройство ассоциировано. Удаление приложения или отмена ассоциации приводит к удалению разрешений. Подробнее см. в разделе AssociationRequest.Builder.setDeviceProfile() .

Шаблоны запросов на разрешения

Существуют различные шаблоны запроса разрешений у пользователей. Вот они (в порядке приоритета):

  • Задавайте вопрос в контексте, когда разрешение явно необходимо для определенной функциональности, но не является обязательным для запуска приложения в целом.

  • Объясните в контексте, когда причина запроса разрешения не очевидна и разрешение не является необходимым для запуска приложения в целом.

Эти закономерности объясняются в следующих разделах.

Задавайте вопросы в контексте

Запрашивайте разрешения, когда пользователю понятно, зачем оно нужно для выполнения той или иной операции. Пользователи с большей вероятностью предоставят разрешение, если понимают его связь с функцией, которую хотят использовать.

Например, приложению может потребоваться местоположение пользователя для отображения близлежащих достопримечательностей. Когда пользователь нажимает на экран, чтобы найти близлежащие места, приложение может немедленно запросить разрешение на определение местоположения, поскольку существует очевидная связь между поиском близлежащих мест и необходимостью разрешения на определение местоположения. Очевидность этой связи исключает необходимость отображения дополнительных обучающих экранов.

Приложение запрашивает разрешение, когда это очевидно необходимо.
Рисунок 5. Запрос разрешения в контексте.

Обучать в контексте

На рисунке 6 показан пример контекстного обучения. Приложению не требуются разрешения для запуска таймера, но встроенная обучающая подсказка показывает, что часть действия — определение местоположения — заблокирована. При нажатии на подсказку появляется экран запроса разрешения, позволяющий пользователю разблокировать определение местоположения.

Используйте метод shouldShowRequestPermissionRationale() , чтобы помочь вашему приложению решить, предоставлять ли дополнительную информацию. Подробнее см. в разделе «Запрос разрешений приложения» . Кроме того, вы можете изучить, как отображает информацию пример приложения-спикера на GitHub.

Когда возникает необходимость в разрешении, приложение объясняет, почему оно необходимо.
Рисунок 6. Обучение в контексте.

Обработка отклонений

Если пользователь отклоняет запрошенное разрешение, которое не является критически важным для предполагаемого действия, не блокируйте его продолжение. Если из-за отказа в разрешении определённые части действия недоступны, предоставьте визуальную обратную связь, которая может быть полезна.

На рисунке 7 показано использование значка замка для обозначения того, что функция заблокирована, поскольку пользователь не дал разрешения на ее использование.

Если пользователь отклоняет разрешение, рядом с соответствующей функцией отображается значок замка.
Рисунок 7. Значок замка, показывающий, что функция заблокирована из-за отказа в доступе.

Когда диалоговое окно с ранее отклонённым разрешением на использование носимого устройства появляется повторно, оно включает опцию « Запретить и больше не показывать» . Если пользователь выберет этот вариант, то в будущем он сможет предоставить это разрешение только через приложение «Настройки» носимого устройства.

Система предлагает прекратить запрашивать разрешение.
Рисунок 8. Пользователь может получить доступ к запросу на разрешение, который ранее был дважды отклонен, через настройки.

Узнайте больше о том, как действовать в случае отказа в выдаче разрешения .

Разрешения для служб

Метод requestPermissions() может быть вызван только действием, поэтому, если пользователь взаимодействует с вашим приложением через сервис, например, через циферблат, сервис должен открыть действие, прежде чем запросить разрешение. В этом действии объясните, почему требуется это разрешение.

В общем случае не запрашивайте разрешения на доступ к циферблату. Вместо этого реализуйте расширение и позвольте пользователю выбирать, какие данные отображать с помощью этого расширения.

Настройки

Пользователь может изменить разрешения приложения Wear OS в любое время в настройках. Когда пользователь пытается выполнить действие, требующее разрешения, сначала вызовите метод checkSelfPermission() чтобы проверить, есть ли у приложения разрешение на выполнение этой операции.

Выполняйте эту проверку, даже если пользователь ранее предоставил разрешение, поскольку впоследствии он мог его отозвать.

Пользователь может изменить разрешения через приложение «Настройки».
Рисунок 9. Пользователь может изменить разрешения с помощью приложения «Настройки».
{% дословно %} {% endverbatim %} {% дословно %} {% endverbatim %} ,

ключевые слова: одежда, разрешения, collection_guideslandingwear путь к изображению: images/training/wear/multiple_permissions.png

Запрос разрешений на Wear OS аналогичен запросу разрешений в мобильных приложениях, но есть несколько дополнительных вариантов использования. В этом документе предполагается, что вы понимаете, как работают разрешения в Android. Если нет, ознакомьтесь с принципами работы разрешений в Android .

Как и в мобильном приложении, пользователь должен предоставить приложению Wear разрешение на доступ к определённым функциям. В своих приложениях Wear предоставляйте значимые функции, не запрашивая никаких разрешений.

Сценарии разрешений

Существует несколько сценариев, с которыми вы можете столкнуться при запросе опасных разрешений в Wear OS:

  • Приложение Wear запрашивает разрешения для приложения, работающего на носимом устройстве.

  • Приложение Wear запрашивает разрешения для приложения, работающего на телефоне.

  • Приложение телефона запрашивает разрешения для приложения, работающего на носимом устройстве.

  • Приложение для телефона запрашивает несколько разрешений, которые можно использовать только при подключенном носимом устройстве.

Чтобы увидеть все эти сценарии в работающем приложении, просмотрите пример ExerciseSampleCompose на GitHub.

В следующих разделах описывается каждый из этих сценариев. Более подробную информацию о запросе разрешений см. в разделе «Шаблоны запросов разрешений» .

Приложение Wear запрашивает разрешение на использование носимых устройств

Когда приложение Wear запрашивает разрешение для приложения, работающего на носимом устройстве, система отображает диалоговое окно с запросом разрешения. В вашем приложении запрашивайте разрешения только тогда, когда пользователю ясно, зачем они нужны для выполнения той или иной операции.

Ознакомьтесь с принципами предоставления разрешений , чтобы убедиться, что вы обеспечиваете наилучший опыт для своих пользователей, и не забудьте проверить shouldShowRequestPermissionRationale() и предоставить дополнительную информацию по мере необходимости.

Если приложению или циферблату требуется более одного разрешения одновременно, запросы на разрешения появляются один за другим.

Несколько экранов разрешений, один за другим.
Рисунок 1. Экраны разрешений, появляющиеся последовательно.

Приложение Wear запрашивает разрешение на использование телефона

Когда приложение Wear запрашивает разрешение на доступ к телефону (например, приложение для носимых устройств запрашивает доступ к фотографиям или другим конфиденциальным данным в мобильной версии приложения), приложение Wear должно перенаправить пользователя на телефон для получения разрешения. Там приложение для телефона может предоставить пользователю дополнительную информацию, используя действие. В этом действии добавьте две кнопки: одну для предоставления разрешения и одну для его отмены.

Приложение Wear отправляет пользователя к телефону для предоставления разрешения.
Рисунок 2. Отправьте пользователя к телефону для предоставления разрешения.

Приложение для телефона запрашивает разрешение на использование носимых устройств

Если пользователь находится в приложении для телефона, и приложение запрашивает разрешение для носимого устройства, например, для предзагрузки музыки на случай отключения телефона, приложение для телефона перенаправляет пользователя на носимое устройство для получения разрешения. Версия приложения для носимых устройств использует метод requestPermissions() для вызова диалогового окна системных разрешений.

Приложение на телефоне направляет пользователя к носимому устройству для предоставления разрешения.
Рисунок 3. Отправьте пользователя на носимое устройство для предоставления разрешения.

Приложение «Телефон» запрашивает несколько разрешений одновременно

Рисунок 4. Диалоговое окно разрешений, которое использует профиль сопутствующего устройства для запроса нескольких разрешений в одном запросе.

Партнерские приложения на Android 12 (уровень API 31) и выше могут использовать профили сопутствующих устройств при подключении к часам. Использование профиля упрощает процесс регистрации, объединяя предоставление набора разрешений, специфичных для типа устройства, в один шаг.

Пакетные разрешения предоставляются сопутствующему приложению после подключения устройства и действуют только пока устройство ассоциировано. Удаление приложения или отмена ассоциации приводит к удалению разрешений. Подробнее см. в разделе AssociationRequest.Builder.setDeviceProfile() .

Шаблоны запросов на разрешения

Существуют различные шаблоны запроса разрешений у пользователей. Вот они (в порядке приоритета):

  • Задавайте вопрос в контексте, когда разрешение явно необходимо для определенной функциональности, но не является обязательным для запуска приложения в целом.

  • Объясните в контексте, когда причина запроса разрешения не очевидна и разрешение не является необходимым для запуска приложения в целом.

Эти закономерности объясняются в следующих разделах.

Задавайте вопросы в контексте

Запрашивайте разрешения, когда пользователю понятно, зачем оно нужно для выполнения той или иной операции. Пользователи с большей вероятностью предоставят разрешение, если понимают его связь с функцией, которую хотят использовать.

Например, приложению может потребоваться местоположение пользователя для отображения близлежащих достопримечательностей. Когда пользователь нажимает на экран, чтобы найти близлежащие места, приложение может немедленно запросить разрешение на определение местоположения, поскольку существует очевидная связь между поиском близлежащих мест и необходимостью разрешения на определение местоположения. Очевидность этой связи исключает необходимость отображения дополнительных обучающих экранов.

Приложение запрашивает разрешение, когда это очевидно необходимо.
Рисунок 5. Запрос разрешения в контексте.

Обучать в контексте

На рисунке 6 показан пример контекстного обучения. Приложению не требуются разрешения для запуска таймера, но встроенная обучающая подсказка показывает, что часть действия — определение местоположения — заблокирована. При нажатии на подсказку появляется экран запроса разрешения, позволяющий пользователю разблокировать определение местоположения.

Используйте метод shouldShowRequestPermissionRationale() , чтобы помочь вашему приложению решить, предоставлять ли дополнительную информацию. Подробнее см. в разделе «Запрос разрешений приложения» . Кроме того, вы можете изучить, как отображает информацию пример приложения-спикера на GitHub.

Когда возникает необходимость в разрешении, приложение объясняет, почему оно необходимо.
Рисунок 6. Обучение в контексте.

Обработка отклонений

Если пользователь отклоняет запрошенное разрешение, которое не является критически важным для предполагаемого действия, не блокируйте его продолжение. Если из-за отказа в разрешении определённые части действия недоступны, предоставьте визуальную обратную связь, которая может быть полезна.

На рисунке 7 показано использование значка замка для обозначения того, что функция заблокирована, поскольку пользователь не дал разрешения на ее использование.

Если пользователь отклоняет разрешение, рядом с соответствующей функцией отображается значок замка.
Рисунок 7. Значок замка, показывающий, что функция заблокирована из-за отказа в доступе.

Когда диалоговое окно с ранее отклонённым разрешением на использование носимого устройства появляется повторно, оно включает опцию « Запретить и больше не показывать» . Если пользователь выберет этот вариант, то в будущем он сможет предоставить это разрешение только через приложение «Настройки» носимого устройства.

Система предлагает прекратить запрашивать разрешение.
Рисунок 8. Пользователь может получить доступ к запросу на разрешение, который ранее был дважды отклонен, через настройки.

Узнайте больше о том, как действовать в случае отказа в выдаче разрешения .

Разрешения для служб

Метод requestPermissions() может быть вызван только действием, поэтому, если пользователь взаимодействует с вашим приложением через сервис, например, через циферблат, сервис должен открыть действие, прежде чем запросить разрешение. В этом действии объясните, почему требуется это разрешение.

В общем случае не запрашивайте разрешения на доступ к циферблату. Вместо этого реализуйте расширение и позвольте пользователю выбирать, какие данные отображать с помощью этого расширения.

Настройки

Пользователь может изменить разрешения приложения Wear OS в любое время в настройках. Когда пользователь пытается выполнить действие, требующее разрешения, сначала вызовите метод checkSelfPermission() чтобы проверить, есть ли у приложения разрешение на выполнение этой операции.

Выполняйте эту проверку, даже если пользователь ранее предоставил разрешение, поскольку впоследствии он мог его отозвать.

Пользователь может изменить разрешения через приложение «Настройки».
Рисунок 9. Пользователь может изменить разрешения с помощью приложения «Настройки».
{% дословно %} {% endverbatim %} {% дословно %} {% endverbatim %}