Руководство по устройствам, имеющим доступ к персональным данным

Applies to Windows and Windows Phone

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

Примеры

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

Запрос на продолжение

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

Запрос на продолжение в приложении Магазина Windows

Чудо-кнопка "Параметры"

Каждый доступ приложения к устройствам, работающим с конфиденциальными данными, также можно настроить с помощью чудо-кнопки "Параметры". Коснувшись чудо-кнопки "Параметры", пользователь открывает панель параметров (SettingsPane). Здесь изображена чудо-кнопка "Параметры" в правой части окна приложения:

Чудо-кнопка “Параметры”

Windows по умолчанию предоставляет всплывающий элемент "Разрешения" для всех приложений Магазина Windows. Когда пользователи выбирают пункт "Разрешения" на панели параметров, появляется всплывающий элемент "Разрешения" и они могут включить или отключить доступ приложения к возможностям устройства, работающего с конфиденциальными данными. Здесь показан всплывающий элемент "Разрешения" из приложения погоды:

Всплывающий элемент, предоставляющий доступ к параметрам расположения приложения

Рекомендации

  • Первый вызов для начала использования устройства, работающего с конфиденциальными данными, следует выполнить в главном потоке пользовательского интерфейса, чтобы пользователю можно было показать запрос на продолжение. Пользователь не сможет предоставить устройству доступ к приложению, если запрос на продолжение не отображается. Убедитесь, что:
    • Приложение не использует фоновую задачу для первого использования устройства.
    • Приложение на JavaScript и HTML не использует вначале объект, имеющий доступ к устройству, в обработчике активации для приложения.
    • Приложение на C#, VB, C++ и XAML вначале использует объект, имеющий доступ к устройству, в MainPage.xaml.cs, а не в App.xaml.cs.
  • Если для всех задач в приложении нет необходимости использовать устройство, работающее с конфиденциальными данными, не получайте к нему доступ, пока пользователь не захочет выполнить задачу, требующую такого доступа. Например, приложение социальной сети с кнопками "Зарегистрироваться с моим расположением" и "Сделать фотографию для профиля" не должно иметь доступ к информации о расположении или к камере, пока пользователь не нажмет соответствующую кнопку.
  • Если приложению нужен доступ к устройству, работающему с конфиденциальными данными, для выполнения своей основной функции, получите доступ к устройству при запуске приложения. Например, приложению, записывающему живое видео, для выполнения своей основной функции необходима камера. В этом случае следует немедленно запросить доступ к устройству.
  • Не запускайте программными средствами страницу Разрешения на панели параметров.

Если доступ к устройству отключен

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

  • Уведомите пользователей о недоступной возможности устройства, когда они пытаются ее использовать. Пользователь должен знать о потере функциональности.
  • Уведомление об отключенном устройстве должно быть хорошо видно пользователю.
  • Используйте всплывающий элемент или встроенное сообщение, чтобы уведомить пользователя, если возможность не требуется для основной функции приложения.
  • Обработайте ошибку API, которая возникнет, когда приложение попытается получить доступ к возможности отключенного устройства. В разделе Справочные материалы этой статьи приводится дополнительная информация о вызовах методов, которые могут возвращать ошибки, указывающие на отсутствие у приложения доступа к устройству.
  • Выведите сообщение для пользователей, в котором указывается, что возможность устройства отключена, и объясняется, как ее можно снова включить через всплывающий элемент "Разрешения" на панели параметров. Чтобы просмотреть примеры уведомлений для пользователя об отключенном устройстве, см. Дополнительное руководство по использованию.
  • Предоставьте пользовательский интерфейс для повторного доступа к устройству, если оно снова будет включено. С помощью этого пользовательского интерфейса еще раз создайте экземпляр объекта, который получает доступ к устройству, или снова запустите его. Например, в приложении для составления карт можно предусмотреть кнопку для обновления текущего расположения. Кнопка должна создавать экземпляр нового объекта Geolocator.
  • Не используйте уведомления, чтобы сообщить пользователю о недоступной возможности устройства.
  • Не выводите сообщение об ошибке, если пользователь еще не обращался к этой возможности устройства. К примеру, если на сайте социальных сетей у пользователя есть возможность добавлять расположение, когда он публикует сообщения, но он предпочел не указывать расположение, то не нужно выводить сообщение об ошибке во время публикации.

Дополнительное руководство по использованию

Пример сообщений об ошибке

Причина отключения устройстваПример формата сообщения об ошибке

Пользователь заблокировал доступ при запросе на продолжение или с помощью чудо-кнопки "Параметры".

"Сейчас возможность <device capability> отключена. Чтобы изменить настройку <device capability>, воспользуйтесь чудо-кнопкой "Параметры" и выберите элемент "Разрешения". Затем выполните <enable action>, чтобы снова начать использовать <device capability>. "

  • Измените <device capability> на функцию веб-камеры, микрофона, определение расположения или обмен текстовыми сообщениями.
  • Замените <enable action> действием, которое пользователь должен выполнить с помощью интерфейса, чтобы снова открыть доступ к возможности, например нажатием кнопки.

Возможность устройства отсутствует в системе.

"В вашей системе отсутствует необходимая <device capability>".

 

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

Отображение всплывающего элемента или встроенного текста, если использовать устройства необязательно

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

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

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

Запрос на продолжение в приложении Магазина Windows

Отображение диалогового окна, если возможность устройства существенна

Если приложению требуется доступ к устройству для выполнения своей основной функции, выведите сообщение об ошибке с помощью MessageDialog. Полный пример: Пример message dialog.

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

Сообщение пользователю о необходимости включить определение расположения

Справочные материалы

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

ВозможностьСведения по включению и выключению
Расположение

Метод GetGeopositionAsync либо обработчик событий PositionChanged создаст запрос на продолжение.

Подробнее о том, как обрабатывать отключение и включение пользователем определения расположения в приложении: Guidelines for location-aware apps.

Пошаговое руководство и примеры кода см. в разделе Определение географического положения (приложения Магазина Windows на JavaScript и HTML) или в разделе Определение географического положения (приложения Магазина Windows на C#, VB, C++ и XAML).

Веб-камера и микрофон

Приложения, использующие метод Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync, чтобы фотографировать и снимать видео с использованием камеры, должны учитывать следующее.

  • Вызов Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync запускает запрос на продолжение при первом запуске приложения. Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync не выдает ошибку, если возможность веб-камеры отключена. Вместо этого сообщение об отключенной возможности выдает пользовательский интерфейс захвата с камеры.

Приложения, использующие для предварительного просмотра или записи звуков, видео и фотографий класс Windows.Media.Capture.MediaCapture, должны учитывать следующее.

  • Обработчики ошибок для асинхронных методов MediaCapture получают сообщение об ошибке E_ACCESSDENIED, если пользователь не дал разрешения, и HRESULT_FROM_WIN32(ERROR_FILE_HANDLE_REVOKED), если разрешение было отозвано.
  • Еще раз вызовите метод InitializeAsync для доступа к веб-камере, если после отзыва пользователь снова включает его. Например, если в ответ на ошибку HRESULT_FROM_WIN32(ERROR_FILE_HANDLE_REVOKED) обработчик ошибок предложит пользователю снова включить веб-камеру с помощью чудо-кнопки "Параметры", а затем коснуться кнопки для перезапуска предварительного просмотра видео. Прежде чем делать другие вызовы, код кнопки должен вызвать InitializeAsync.

Учебники по использованию Windows.Media.Capture: Добавление мультимедиа (приложения Магазина Windows на JavaScript и HTML) или Добавление мультимедиа (приложения Магазина Windows на C#, VB, C++ и XAML).

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

 

Связанные разделы

Для разработчиков (HTML)
DeviceCapability
MessageDialog
Объявление характеристик приложений
Как вручную указать возможности устройства в манифесте пакета
Quickstart: Adding a flyout
Для разработчиков (XAML)
DeviceCapability
MessageDialog
Объявление характеристик приложений
Как вручную указать возможности устройства в манифесте пакета
Добавление всплывающих элементов и меню
Примеры
Пример message dialog

 

 

Показ:
© 2014 Microsoft