Testando e solucionando problemas de proximidade em aplicativos (HTML)
[ Este artigo destina-se aos desenvolvedores do Windows 8.x e do Windows Phone 8.x que escrevem aplicativos do Windows Runtime. Se você estiver desenvolvendo para o Windows 10, consulte documentação mais recente]
Este tópico traz diretrizes para os desenvolvedores de aplicativos testarem e solucionarem problemas de Proximidade em um aplicativo antes de enviá-lo para a loja.
Antes de começar
A Proximidade é uma excelente forma de criar uma experiência de aplicativo compartilhada entre duas instâncias de seu aplicativo em execução em dois dispositivos diferentes. Em um aplicativo com a Proximidade habilitada, os usuários do aplicativo simplesmente tocam nos dois dispositivos juntos para iniciar uma conexão, ou um usuário pode navegar para encontrar outro dispositivo no alcance da conexão sem fio que está executando o aplicativo. A procura de aplicativos pares em outros computadores utiliza Wi-Fi Direct. No Windows Phone, a descoberta de aplicativos pares usa Bluetooth, e localiza aplicativos pares sendo executados em outros telefones.
Para testar os recursos que respondem ao gesto de tocar, cada dispositivo deve ter um dispositivo de Proximidade instalado, como rádio NFC (transmissão de dados a curta distância). Para testar recursos que usam a navegação sem fio em computadores, todo computador deve oferecer suporte a Wi-Fi Direct.
Observação Para testar recursos de navegação para aplicativos da Loja do Windows Phone, todo telefone deve ter suporte a Bluetooth.
Configurando para testar:
Se você não tiver um hardware com suporte para toque de Proximidade, como rádio NFC (comunicação a curta distância), poderá usar o driver de Proximidade de exemplo incluído nos exemplos de Kit de Driver do Windows (WDK). Esse driver de exemplo pode ser usado para simular um gesto de tocar através de uma conexão de rede entre dois dispositivos. Para saber como baixar o WDK, veja Kit de Driver do Windows (WDK). Depois que instalar o WDK e os exemplos, você poderá encontrar o driver de Proximidade de exemplo no diretório src\nfp, no local em que os exemplos do WDK foram instalados. Para obter instruções sobre como criar e executar o simulador, veja o arquivo NetNfpProvider.html no diretório src\nfp\net. Depois que você iniciar o simulador, ele será executado em segundo plano enquanto seu aplicativo de Proximidade é executado em primeiro plano. O aplicativo deve estar em primeiro plano para que a simulação de toque funcione.
Conectando aplicativos usando a classe PeerFinder
Você pode usar a classe PeerFinder para criar uma conexão de soquete entre o mesmo aplicativo em execução em dois dispositivos diferentes, ou seja, um aplicativo par. Com a classe PeerFinder, você pode conectar aplicativos pares a partir de um gesto de tocar ou pode usar o Wi-Fi Direct para procurar pares dentro do alcance sem fio. Ambos os métodos de conexão de aplicativos pares criam um soquete aberto entre os aplicativos pares, e é recomendável que você inclua o suporte para os recursos de conexão acionada (toque) e de busca (Wi-Fi Direct) em seu aplicativo.
Para obter um exemplo de conexão de aplicativos pares, veja Guia de início rápido: Usando toque ou navegação para conectar aplicativos ou Exemplo de proximidade na galeria de exemplos. Para obter diretrizes sobre a criação de aplicativos que usam a Proximidade, veja Diretrizes para o desenvolvimento com Proximidade.
Testando conexões de aplicativos pares
- Instale seu aplicativo em dois dispositivos e inicie o aplicativo em ambos os dispositivos.
- Em ambos os dispositivos, anuncie o aplicativo para uma conexão de pares. Para isso, chame o método Start.
- Para testar as conexões acionadas, toque nos dispositivos e os una.
- Verifique se a interface do usuário do aplicativo indica o status do gesto de tocar. Ou seja, quando um par for encontrado, quando os dispositivos estiverem em processo de conexão etc. Para obter mais informações, veja o evento TriggeredConnectionStateChanged.
- Se a conexão tiver êxito, verifique se a interface do usuário do aplicativo indica que o recurso de rede está ativo em ambos os dispositivos.
- Se a conexão falhar, verifique se a interface do usuário do aplicativo informa ao usuário que ocorreu uma falha na conexão de rede.
- Para testar conexões sem fio, faça com que um dos dois dispositivos procure conexões de pares disponíveis. Para isso, chame o método FindAllPeersAsync. A procura somente é suportada entre computadores ou entre telefones, mas não entre telefones e computadores. O mecanismo sobre o qual a procura ocorre é diferente de um aplicativo em execução em um computador e um aplicativo em execução em um telefone. O Windows Phone somente suporta procura via Bluetooth, enquanto computadores somente suportam procura via Wi-Fi Direct.
- Se a conexão tiver êxito, verifique se a interface do usuário do aplicativo indica que o recurso de rede está ativo em ambos os dispositivos.
- Se a conexão falhar, verifique se a interface do usuário do aplicativo informa ao usuário que ocorreu uma falha na conexão de rede.
- Se seu aplicativo der suporte para conexões com mais de dois pares, expanda o teste para usar vários dispositivos.
Se um aplicativo com suporte para conexões acionadas (toque) estiver instalado em dois dispositivos, solicitar uma conexão a partir de um dos dispositivos com um gesto de tocar solicitará que o usuário do segundo dispositivo inicie ou instale o aplicativo. O aplicativo deve estar em execução em primeiro plano no dispositivo solicitante. Essa funcionalidade não tem suporte para a busca de conexões com o método FindAllPeersAsync.
Testando aplicativos iniciados com um gesto de tocar
- Instale o aplicativo nos dois dispositivos. Inicie o aplicativo somente no primeiro dispositivo.
- No dispositivo que executa o aplicativo, anuncie-o para uma conexão de pares. Para isso, chame o método Start.
- Una os dispositivos pelo toque.
- No segundo dispositivo, verifique se ocorre uma notificação solicitando que o usuário inicie o aplicativo. Aceite a notificação.
- Verifique se o aplicativo é iniciado com êxito no segundo dispositivo e se estabelece um soquete de rede de Proximidade imediatamente. Verifique se a interface do usuário do aplicativo indica que o recurso de rede está ativo em ambos os dispositivos.
- Se o aplicativo não for iniciado com êxito, verifique se a interface do usuário do aplicativo no dispositivo solicitante indica uma tentativa malsucedida. Se o aplicativo for iniciado, mas não estabelecer um soquete de rede de Proximidade, verifique se a interface do usuário do aplicativo em ambos os dispositivos indica a falha.
Seu aplicativo deve ser desenvolvido para lidar com a situação em que uma solicitação para iniciar um aplicativo par é negada.
Testando solicitações recusadas de um gesto de tocar
- Instale o aplicativo nos dois dispositivos. Inicie o aplicativo somente no primeiro dispositivo.
- No dispositivo que executa o aplicativo, anuncie-o para uma conexão de pares. Para isso, chame o método Start.
- Una os dispositivos pelo toque.
- No segundo dispositivo, verifique se ocorre uma notificação solicitando que o usuário inicie ou instale o aplicativo. Recuse a notificação.
- Verifique se o aplicativo não é iniciado no segundo dispositivo e se a interface do usuário do aplicativo solicitante indica que a solicitação foi recusada.
Publicando e assinando mensagens com a classe ProximityDevice
Você pode usar a classe ProximityDevice para publicar pequenas mensagens entre os dispositivos durante um gesto de tocar. Os dispositivos precisam estar dentro do alcance do hardware de Proximidade instalado. Essa distância geralmente é de 2 a 3 cm.
Para publicar uma mensagem durante um gesto de tocar, use o método PublishMessage, PublishBinaryMessage ou PublishUriMessage no dispositivo publicador e o método SubscribeForMessage no dispositivo receptor. Para obter um exemplo de publicação e assinatura de mensagens, veja Guia de início rápido: Usando toque para publicar ou assinar mensagens ou Exemplo de proximidade na galeria de exemplos.
Testando um aplicativo que publica ou assina uma mensagem
- Inicie o aplicativo publicador em um dos dispositivos e o aplicativo assinante no outro dispositivo. Pode ser o mesmo aplicativo nos dois dispositivos, mas isso não é obrigatório.
- Coloque os aplicativos no estado de publicação e recebimento de mensagens. Isso envolve a chamada de um dos métodos de publicação no aplicativo publicador e o método SubscribeForMessage no aplicativo receptor.
- Una os dispositivos pelo toque.
- Se a mensagem for transmitida com êxito, verifique se a interface do usuário do aplicativo assinante indica que a mensagem foi recebida. Uma opção para o aplicativo publicador é chamar a sobrecarga do método de publicação que inclui um parâmetro de um manipulador de eventos do tipo MessageTransmittedHandler que é chamado quando a mensagem é transmitida. No código desse manipulador de eventos, você pode atualizar a interface do usuário do aplicativo publicador para indicar que a mensagem foi transmitida com êxito.
- Se a mensagem não for publicada ou recebida, consulte o código do seu aplicativo para identificar o problema. Para obter etapas de solução de problemas, veja "Uma mensagem publicada e assinada não é recebida" na seção "Solução de problemas" deste tópico.
- Teste se é possível tirar ambos os aplicativos do estado de publicação e assinatura de mensagens. No dispositivo publicador, chame o métodoStopPublishingMessage. No dispositivo assinante, chame o método StopSubscribingForMessage. Depois de unir os dois dispositivos pelo toque, verifique se a mensagem deixa de ser publicada ou recebida.
Solução de problemas
Se o problema ocorrido estiver descrito nesta seção, você talvez possa encontrar uma resposta nos fóruns de desenvolvimento do Windows.
Problema | Etapas de solução de problemas |
---|---|
O toque não responde. Ao conectar aplicativos pares com um gesto de tocar ou ao publicar e assinar uma mensagem durante um toque, o código para responder ao gesto de tocar não é executado. | Verifique se os dispositivos envolvidos no gesto de tocar estão dentro de um alcance de proximidade de pelo menos 2 cm. Talvez seja necessário alinhar os dispositivos de acordo com o local do dispositivo de Proximidade. O Windows reproduzirá um som quando os dispositivos estiverem dentro do alcance de proximidade. Você pode usar os eventos DeviceArrived e DeviceDeparted para identificar quando um dispositivo entra ou sai de proximidade. Adicione manipuladores de eventos ao seu código para os eventos DeviceArrived e DeviceDeparted. Se o código do manipulador de eventos for executado, significa que o gesto de tocar teve êxito. Se o código do manipulador de eventos para os eventos DeviceArrived e DeviceDeparted não for executado, talvez haja algum problema com o hardware ou driver de Proximidade. Se o aplicativo estiver usando a classe PeerFinder para criar uma conexão acionada e o evento DeviceArrived for acionado, mas o evento TriggeredConnection não for acionado, verifique o seguinte:
|
O aplicativo não é iniciado após um toque. | Verifique se o aplicativo está em execução em primeiro plano em pelo menos um dos dois dispositivos envolvidos no toque. Se for esse o caso, e o aplicativo ainda não for iniciado após um toque, consulte as etapas de solução de problemas "O toque não responde". Se o evento TriggeredConnection for acionado no aplicativo executado em primeiro plano, mas não houver solicitação para iniciar o aplicativo no outro dispositivo envolvido no gesto de tocar, verifique se o aplicativo foi instalado corretamente. Se o aplicativo tiver sido instalado corretamente, ele será iniciado no bloco de início e se conectará com um gesto de tocar enquanto estiver em execução em primeiro plano. |
Nenhum par é encontrado durante a navegação. |
|
Uma tentativa de conexão com um toque falha após um minuto. | Verifique as configurações sem fio nos dois dispositivos envolvidos no toque e confirme se os rádios do Wi-Fi e do Bluetooth estão ativados. Se um dos dispositivos não tiver um dispositivo sem fio com suporte para Wi-Fi Direct ou rádio Bluetooth, verifique se ambos estão conectados à mesma rede. |
Uma mensagem publicada e assinada não é recebida. Ao publicar e assinar mensagens, a mensagem publicada não é recebida pelo dispositivo assinante. | No dispositivo publicador, você pode usar a sobrecarga do método PublishMessage, PublishUriMessage, ou PublishBinaryMessage que inclui um parâmetro de um manipulador de eventos do tipo MessageTransmittedHandler que é chamado quando a mensagem é transmitida. Se a chamada do método de publicação tiver êxito e o código do manipulador de eventos MessageTransmittedHandler for executado, significa que a mensagem foi transmitida com êxito. No computador assinante, verifique se o valor do parâmetro messageType que você passou para o método SubscribeForMessage corresponde ao valor do parâmetro messageType que foi passado para o método PublishMessage ou PublishBinaryMessage (para o método PublishUriMessage, o valor de messageType é sempre WindowsUri. Os valores de tipo de mensagem diferenciam maiúsculas e minúsculas. |
Tópicos relacionados
Dando suporte para Proximidade e toque
Guia de início rápido: Usando toque ou navegação para conectar aplicativos
Guia de início rápido: Usando toque para publicar ou assinar mensagens
Diretrizes e lista de verificação para Proximidade
Windows.Networking.Proximity namespace
Exemplos