Diretrizes para dispositivos que acessam dados pessoais

Applies to Windows and Windows Phone

Microfones, câmeras, localizadores e serviços de mensagens de texto podem acessar os dados pessoais do usuário ou acarretar custos para o usuário, portanto são considerados dispositivos confidenciais. Os aplicativos da Windows Store têm recursos para garantir que o usuário controle quais aplicativos podem acessar esses dispositivos confidenciais. Este tópico descreve as diretrizes para criar aplicativos da Windows Store incluindo como um usuário pode habilitar e desabilitar o acesso a dispositivo.

Exemplos

As permissões dos aplicativos da Windows Store para usar os dispositivos confidenciais são controladas por aplicativo e por nível de usuário. Os usuários controlam as permissões usando a solicitação de consentimento ou o botão Configurações. As imagens a seguir mostram a IU associada às solicitações de consentimento e à seção Permissões do painel Configurações.

A solicitação de consentimento

Aqui está a solicitação de consentimento em um aplicativo da Windows Store. A solicitação aparece na primeira vez em que um aplicativo tenta acessar um dispositivo confidencial. Ela oferece ao usuário opções para bloquear ou permitir o acesso do aplicativo à funcionalidade do dispositivo. O Windows lembra a resposta de modo que a solicitação de consentimento não seja exibida novamente para o mesmo aplicativo.

Solicitação de consentimento em um aplicativo da Windows Store

Botão Configurações

Cada acesso ao aplicativo a dispositivos sensíveis também pode ser configurado utilizando o botão Configurações. O usuário toca no botão Configurações para abrir painel correspondente (SettingsPane). O botão Configurações está representado a seguir no lado direito do aplicativo:

Botão Configurações

O Windows fornece um submenu Permissões por padrão para cada aplicativo da Windows Store. Quando os usuários clicam em Permissões a partir do painel Configurações, o submenu Permissões aparece e eles podem habilitar ou desabilitar o acesso do aplicativo às funcionalidades do dispositivo confidencial. Aqui está o submenu Permissões a partir de um aplicativo de previsão de tempo:

menu suspenso Configurações que oferece configurações de local do aplicativo

O que fazer e o que não fazer

  • A primeira chamada para começar a usar o dispositivo deve ser feita no thread da interface do usuário principal, dessa forma a solicitação de consentimento pode ser exibida para o usuário. O usuário não será capaz de conceder acesso de dispositivo ao aplicativo a menos que a solicitação de consentimento seja exibida. Certifique-se de que:
    • Seu aplicativo não use uma tarefa em segundo plano quando usar o dispositivo pela primeira vez.
    • Se o seu aplicativo que usa JavaScript e HTML não utiliza primeiro o objeto que acessa o dispositivo, no manipulador de ativação para o aplicativo.
    • Seu aplicativo utilizando C#/VB/C++ e XAML utiliza primeiro o objeto que acessa o dispositivo em MainPage.xaml.cs, não App.xaml.cs.
  • Se o uso do dispositivo confidencial não for essencial para todas as tarefas em seu aplicativo, não o acesse até que o usuário deseje completar uma tarefa que o exija. Por exemplo, um aplicativo de rede social com botões para "Verificar minha localização" e "Tirar uma foto para o perfil" não devem acessar o local ou a câmera até que o usuário clique no botão correspondente.
  • Se o seu aplicativo exige acesso a um dispositivo confidencial para a sua função principal, acesse esse dispositivo quando o aplicativo for iniciado. Por exemplo, um aplicativo que captura vídeos ao vivo exige o uso da câmera para seu propósito principal. Nesse caso, é adequado solicitar acesso imediato ao dispositivo.
  • Não tente abrir a página Permissões de maneira programática no botão Configurações.

Se o acesso a um dispositivo é desativado

Há três meios de um dispositivo ser desabilitado: se um usuário nega sua permissão quando solicitado, se um usuário bloqueia o acesso no submenu Permissões do painel Configurações, ou se o dispositivo não está presente no sistema. Siga essas recomendações se o seu aplicativo não pode acessar um dispositivo confidencial:

  • Notifique os usuários sobre uma funcionalidade de dispositivo indisponível quando eles tentam utilizá-la. O usuário deverá ter conhecimento da perda de funcionalidade.
  • Torne a notificação de dispositivo desabilitado claramente visível para o usuário.
  • Utilize um submenu ou mensagem em linha para notificar o usuário se a funcionalidade não é essencial para a função primária do aplicativo.
  • Trate o erro da API que ocorrerá quando o aplicativo tenta acessar uma funcionalidade do dispositivo desabilitada. A seção Referência deste tópico fornece mais informações sobre as chamadas de método que podem retornar erros que indicam que o aplicativo não tem acesso a um dispositivo.
  • Exiba uma mensagem para usuários informando-os que o recurso do dispositivo está desabilitado e também como é possível reabilitá-lo usando o submenu Permissões no painel Configurações. Para exemplos de como notificar um usuário sobre um dispositivo desabilitado, consulte Orientações adicionais sobre utilização.
  • Forneça a interface do usuário para que o usuário reinicie o acesso ao dispositivo caso este seja reabilitado. Repita a instância ou reinicialize o objeto que acessa o dispositivo usando essa interface do usuário. Por exemplo, um aplicativo de mapeamento pode fornecer um botão para atualizar a localização atual. O botão deve instanciar um novo objeto Geolocator.
  • Não use notificações para notificar o usuário sobre a capacidade de um dispositivo indisponível.
  • Não mostre uma mensagem de erro para uma funcionalidade do dispositivo que ainda não foi solicitada pelo usuário. Por exemplo, se um site de rede social tiver uma opção para incluir a localização quando o usuário postar mensagens, mas ele não optar por compartilhar sua localização, não mostre uma mensagem de erro quando as mensagens forem postadas.

Diretrizes de uso adicional

Exemplos de mensagens de erro

Motivo pelo qual o dispositivo está desabilitadoFormato de mensagem de erro de exemplo

O usuário bloqueou o acesso usando a solicitação de consentimento ou o botão Configurações.

"Seu <device capability> está atualmente desativado. Para mudar sua configuração de <device capability>, abra o botão Configurações e toque em permissões. Em seguida, <enable action> para começar a usar o <device capability> novamente. ”

  • Substitua <device capability> por webcam, microfone, localização ou mensagens de texto.
  • Substitua <enable action> pela ação que o usuário precisa executar na interface do usuário para reinicializar o acesso à funcionalidade, como clicar em um botão.

A funcionalidade do dispositivo não está presente no sistema.

Você não possui a <device capability> necessária no sistema.”

 

A interface do usuário que você usa para apresentar a mensagem sobre uma funcionalidade desabilitada do dispositivo depende se ela é essencial para o aplicativo. Os exemplos a seguir mostram como exibir mensagens das funcionalidades do dispositivo.

Mostrar um submenu ou texto embutido se o dispositivo não for essencial

Se o dispositivo confidencial não for essencial ao aplicativo, mostre a mensagem em um menu suspenso no ponto de solicitação ou em um texto embutido discreto.

Por exemplo, se um aplicativo de mapeamento tem um botão para mostrar o local atual, e o usuário clica no botão quando a funcionalidade do dispositivo necessária está desabilitada, o aplicativo deve mostrar a mensagem de erro em um menu suspenso próximo ao botão ou em um texto embutido.

A seguinte captura de tela mostra um aplicativo que exibe uma mensagem de erro em um submenu. A mensagem diz que seu local não foi encontrado e pede para alterar sua permissão em Configurações para permitir que Mapas acessem seu local. Em seguida, pede para reiniciar o aplicativo.

Solicitação de consentimento em um aplicativo da Windows Store

Mostrar uma caixa de diálogo caso a funcionalidade do dispositivo seja essencial

Se um aplicativo solicita acesso ao dispositivo para a sua função principal, ele vai mostrar uma mensagem de erro utilizando uma MessageDialog. Para um exemplo completo, consulte Exemplo de caixa de diálogo de mensagem.

Na captura de tela a seguir, o aplicativo de Câmera pede acesso às funcionalidades de webcam e microfone para sua função principal, por isso exibe uma mensagem orientando o usuário a habilitar a funcionalidade de câmera.

Mensagem para o usuário que o local deve ser habilitado

Referência

Esta tabela lista informações sobre a API referentes a desabilitação e reabilitação das funcionalidades de dispositivos sensíveis.

FuncionalidadeInformações sobre habilitação e desabilitação
Localização

O método GetGeopositionAsync ou um manipulador de eventos para o evento PositionChanged acionará a solicitação de consentimento.

Consulte Guidelines for location-aware apps para mais informações sobre como controlar a desabilitação e reabilitação da localização por parte do usuário em seu aplicativo.

Consulte Detectando locais geográficos (aplicativos Windows Store utilizando JavaScript e HTML) ou Detectando locais geográficos (aplicativos Windows Store utilizando C#/VB/C++ e XAML) para orientação passo a passo e exemplos de código.

Webcam ou microfone

Aplicativos que usam Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync para capturar fotos ou vídeos a partir de uma câmera devem observar o seguinte:

  • Chamar Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync aciona uma solicitação de consentimento na primeira vez que o aplicativo é executado. Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync não retornará um erro se a funcionalidade da webcam for desativada. Em vez disso, a interface do usuário de Captura com Câmera exibirá uma mensagem que indica que a funcionalidade da webcam está desativada.

Aplicativos que usam Windows.Media.Capture.MediaCapture para ver ou capturar áudio, vídeo ou fotos devem tratar os seguintes problemas:

  • Os manipuladores de erro para métodos assíncronos do MediaCapture recebem o erro E_ACCESSDENIED quando o usuário não concede permissão, e HRESULT_FROM_WIN32(ERROR_FILE_HANDLE_REVOKED), quando a permissão é revogada.
  • Chame InitializeAsync novamente para acessar a câmera, se o usuário reabilitar o acesso à webcam após revogá-lo. Por exemplo, quando o manipulador do erro HRESULT_FROM_WIN32(ERROR_FILE_HANDLE_REVOKED) orienta o usuário a reabilitar a webcam usando o botão Configurações e depois tocar em um botão para reiniciar uma visualização de vídeo. O código por trás do botão deve chamar InitializeAsync antes de fazer outras chamadas.

Consulte Adicionando multimídia ao seu aplicativo (aplicativos Windows Store em JavaScript e HTML) ou Adicionando multimídia (aplicativos Windows Store em C#/VB/C++ e XAML) para tutoriais sobre como utilizar o Windows.Media.Capture.

Os aplicativos que usam a interface IAudioClient2 devem notar que uma chamada para ActivateAudioInterfaceAsync acionará uma solicitação de consentimento.

 

Tópicos relacionados

Para desenvolvedores (HTML)
DeviceCapability
MessageDialog
Declarações de funcionalidade do aplicativo
Como especificar manualmente as funcionalidades do dispositivo em um manifesto do pacote
Quickstart: Adding a flyout
Para desenvolvedores (XAML)
DeviceCapability
MessageDialog
Declarações de funcionalidade do aplicativo
Como especificar manualmente as funcionalidades do dispositivo em um manifesto do pacote
Adicionando submenus e menus
Exemplos
Exemplo de caixa de diálogo

 

 

Mostrar:
© 2014 Microsoft