¿Qué es Proximity?

Proximity es una API de desarrollo, que da soporte a conexión entre dispositivos que están a corta distancia. En pocas palabras, usamos el Proximity para desarrollar aplicaciones NFC en Windows Phone y es con este conjunto de clases que trabajaremos a partir de ahora. Podemos usar el proximity para transferir una foto entre dos celulares con apenas un tap o iniciar un juego multiplayer entre dos amigos que están próximos uno al otro. Proximity da soporte al sistemas Windows y Windows Phone, a partir de la versión 8.0.

Cuando es realizado el tap entre dispositivos con éxito, un socket de comunicación es establecido, pudiendo ser por TCP/IP (Wi-Fi) o Bluetooth, proximity determina la conexión que será establecida a través de los valores de PeerFinder.AllowBluetooth y PeerFinder.AllowInfrastructure estándar. Normalmente esta conexión es establecida vía Bluetooth, para el uso del Wi-Fi, es necesario que los dos dispositivos estén en la misma red de infraestructura, no habiendo conflictos de IP o Firewalls. A partir del Windows 8.1, será posible el uso del Wi-Fi Direct, por ahora en el 8.0 no es dado soporte. Es recomendado informar en su aplicación al usuario, si el Bluetooth esta activado en el dispositivo. Para eso, usted puede usar un MessageBox mostrando el mensaje de aviso.

Proximity sólo consigue actuar en la aplicación activa, cuando la aplicación va para Background (atender llamada, mensaje, otra aplicación) todos los mensajes de proximity son suspendidos, no existe actividades en background, lo que significa que no es posible almacenar un pedido y ejecutarlo, cuando la aplicación vuelva a estar activa, todas las publicaciones serán resumidas. Lo que es posible mantener en background son las conexiones Wi-Fi y Bluetooth entre los dispositivos. Para grabar informaciones específicas de la aplicación, indicamos el uso del tombstone que grabará informaciones importantes en caso de cambios de estado da aplicación. Cuando la conexión sea perdida, es posible reestablecerla, para eso, grabe las informaciones de RemoteHostName y RemoteServiceName y en el retorno de la aplicación al modo activo, cree un nuevo HostName pasando el valor de RemoteHostName almacenado e inicie un nuevo socket.ConnectAsync pasando el RemoteServiceName almacenado y el nuevo HostName generado en la llamada anterior.
Por estándar el socket establecido entre los dispositivos es desprotegido, cuando usted necesite d más seguridad en su comunicación, indicamos el uso de encriptación, para eso, usted puede usar el valor de la SessionKey establecida en la conexión como llave da seguridad y aplicar algún algoritmo que va a ser protegido por la llave y apenas accedido por los dispositivos. Ver el código fuente aquí.

Podemos usar el proximity en el Windows Phone para Conectar dispositivos, adquirir contenido o intercambio de objetos digitales, como ejemplos:
  • Conectar Dispositivos – Tenemos el Tap + Shoot Together, que inicia una conexión entre dos dispositivos para tomar fotos juntos, después del tap es iniciada una conexión Bluetooth o Wi-fi entre los aparatos.
  • Adquirir Contenido – Dar un tap en un cartel de una película y recibir una aplicación de la película, un tráiler o un cupón promocional para estreno de la película en el cinema.
  • Intercambio de Objetos Digitales – En el tap de celulares pasar su tarjeta de visita para todos en la sala de reunión.

Vea algunas clases de Proximity y una pequeña descripción:

Clase Descripción
PeerFinder A través del PeerFinder es posible encontrar otros dispositivos próximos e iniciar una conexión vía socket entre ellos.
ProximityDevice Torna posible la comunicación entre dispositivos próximos uno al otro (3-4 cm) y hacer el intercambio de un upload durante el tap.
PeerInformation Contiene las informaciones de identificación
ProximityMessage Representa el mensaje recibido.
ConnectionRequestedEventArgs Contiene las propiedades que son pasadas para la aplicación, a través del evento de ConnectionRequested
TriggeredConnectionStateChangedEventArgs Contiene las propiedades pasadas para la aplicación, a través del evento TriggeredConnectionStateChanged


Last edited Aug 7, 2014 at 4:42 PM by jordanamagalhaes, version 2