O que é a Proximity?

Proximity é uma API de desenvolvimento que dá suporte a conexão entre dispositivos que estão em uma curta distância. Em poucas palavras usamos a Proximity para desenvolver aplicativos NFC no Windows Phone e é com esse conjunto de classes que trabalharemos a partir de agora. Podemos usar a Proximity para transferir uma foto entre dois celulares com apenas um toque ou iniciar a partida de um jogo multiplayer entre dois amigos que estão próximos um ao outro. A Proximity suporta os sistemas Windows e Windows Phone a partir da versão 8.0.

Quando é realizado o toque entre devices com sucesso, um socket de comunicação é estabelecido podendo ser Wi-Fi (TCP/IP) ou Bluetooth, a Proximity determina a conexão que vai ser estabelecida através dos valores da PeerFinder.AllowBluetooth e PeerFinder.AllowInfrastructure padrão. Normalmente essa conexão é estabelecida via Bluetooth, para o uso do Wi-Fi é necessário os dois devices estarem na mesma rede de infra-estrutura, não tendo conflitos de IP ou Firewalls. A partir do Windows 8.1 será possível o uso do Wi-Fi Direct por enquanto no 8.0 não é dado suporte. É recomendado informar no seu aplicativo ao usuário se o Bluetooth está ligado no dispositivo. Para isso você pode usar um MessageBox mostrando a mensagem de aviso.

A Proximity só consegue atuar no aplicativo ativo, quando o aplicativo vai para background (atender ligação, mensagem, outro aplicativo) todas as mensagens da Proximity são suspensas, não existe atividades em background o que significa que não é possivel armazenar um pedido e executá-lo quando o aplicativo voltar a estar ativo, todas as publicações vão ser resumidas. O que é possível manter em background são as conexões Wi-Fi ou Bluetooth entre os dispositivos. Para salvar informações específicas da aplicação indicamos o uso de tombstone que salvará informações importantes em caso de mudanças de estado da aplicação. Por padrão o socket estabelecido entre os dispositivos é desprotegido, caso você precise de mais segurança em sua comunicação indicamos o uso de encriptação, para isso você pode usar o valor da SessionKey estabelecida na conexão como chave da segurança e aplicar algum algoritmo que vai ser protegido pela chave e apenas acessado pelos dispositivos. Veja aqui o código fonte.

Podemos usar a Proximity no Windows Phone para conectar devices, adquirir conteúdo ou troca de objetos digitais, como exemplos:
  • Conectar Devices – Temos o Tap + Shoot Together que inicia uma conexão entre dois dispositivos para tirar fotos juntos, depois do tap é iniciada uma conexão Bluetooth ou Wi-fi entre os aparelhos.
  • Adquirir Conteúdo – Toque o celular em um cartaz de um filme e receba um aplicativo do filme, um trailer ou um cupom promocional para estréia do filme no cinema.
  • Troca de Objetos Digitais – Toque entre os celulares e passe seu cartão de visita para todos na sala de reunião.

Veja algumas classes da Proximity e uma pequena descrição:

Class Description
PeerFinder Através do PeerFinder é possível encontrar outros dispositivos próximos e iniciar uma conexão via socket entre eles.
ProximityDevice Torna possível a comunicação entre dispositivos próximos um ao outro (3-4 cm) e fazer a troca de um pauload durante o tap.
PeerInformation Contem as informações de identificação
ProximityMessage Representa a mensagem recebida.
ConnectionRequestedEventArgs Contém as propriedades que são passadas para a aplicação através do evento de ConnectionRequested
TriggeredConnectionStateChangedEventArgs Contém as propriedades passadas para a aplicação através do evento TriggeredConnectionStateChanged


Last edited Aug 7, 2014 at 1:13 AM by brmontei, version 7