Aplicaciones de Windows
Contraer la tabla de contenido
Expandir la tabla de contenido

Admitir proximidad y gestos de pulsar (aplicaciones de la Tienda Windows con JavaScript y HTML)

Propósito

Con la proximidad, puedes mejorar tus aplicaciones para usar transmisión de datos en proximidad (NFC) y conectar dos equipos sin la necesidad de tener una red con Wi-Fi Direct. La proximidad y NFC te permiten conectar equipos con un simple gesto de tocar. Si dos equipos se acercan a unos 3 o 4 centímetros de distancia o se tocan entre sí, el sistema operativo de cada uno reconoce el equipo próximo. También, mediante la búsqueda de dispositivos del mismo nivel con Wi-Fi Direct, puedes conectar dos equipos que ejecutan tu aplicación. Después puedes conectar los dos equipos y juntarlos para compartir contenido como fotos vínculos, crear una experiencia de juego con varios jugadores o publicar mensajes y suscribirte a mensajes.

Importante  

Un equipo debe tener un dispositivo de proximidad, como un dispositivo de radio de transmisión de datos en proximidad (NFC), para que se puedan habilitar las conexiones mediante el gesto de pulsar. Un equipo debe tener habilitado un dispositivo Wi-Fi que admita Wi-Fi Direct para habilitar la búsqueda de dispositivos del mismo nivel.

En esta sección

TemaDescripción

Inicio rápido: conexión de aplicaciones mediante gesto de pulsar o exploración

Al usar la proximidad, puedes establecer una conexión entre dos dispositivos con un simple gesto de pulsar o explorando en busca de dispositivos que estén dentro del alcance inalámbrico. No necesitas estar conectado a una red. Puedes simplemente juntar dos equipos con un gesto de pulsar o conectarte mediante Wi-Fi Direct.

Inicio rápido: publicar mensajes y suscribirse a mensajes mediante gestos de pulsar

Con la proximidad, puedes publicar y suscribirte a mensajes entre dos equipos y escribir etiquetas estáticas en un equipo con un simple gesto de pulsar. Si dos equipos se acercan a unos 3 o 4 centímetros de distancia, la proximidad notifica a cada sistema. En este tema te mostramos cómo usar la proximidad para publicar un mensaje o suscribirte a un mensaje.

Directrices para el desarrollo mediante la proximidad

Este tema describe los procedimientos recomendados para usar la proximidad a fin de conectar aplicaciones y compartir contenido.

Pruebas y solución de problemas de la proximidad en las aplicaciones

En este tema se proporcionan instrucciones para que los desarrolladores de aplicaciones prueben y solucionen problemas de proximidad en una aplicación antes de enviarla a la Tienda.

 

Audiencia del desarrollador

La característica de proximidad está diseñada para que la usen los desarrolladores que quieren ampliar su aplicación para que se habiliten las conexiones sencillas mediante un gesto de tocar o mediante la búsqueda de otros dispositivos que ejecuten tu aplicación, o aplicaciones del mismo nivel, dentro del alcance inalámbrico. Por ejemplo, estas aplicaciones pueden incluir un juego con varios jugadores en el que los jugadores hacen que sus equipos se toquen a fin de establecer una sesión de juego compartida. O bien, una aplicación puede permitir que los clientes toquen un equipo y reciban un vínculo a una ubicación en la que pueden obtener más información o hacer una compra.

Puedes usar la proximidad para permitir un intercambio rápido de datos durante un gesto de pulsar. También puedes usar el gesto de pulsar para establecer un canal de comunicaciones a largo plazo por medio de una infraestructura de red, Wi-Fi Direct o Bluetooth.

La proximidad es compatible en las clases de Windows en tiempo de ejecución que se encuentran en el espacio de nombres Windows.Networking.Proximity. Puedes usar la clase ProximityDevice para comunicarte con otros equipos que estén dentro de un alcance de 3 o 4 centímetros de proximidad e intercambiar una pequeña cantidad de datos durante el gesto de tocar. Puedes usar la clase PeerFinder para comunicarte con aplicaciones del mismo nivel y configurar una conexión de socket a largo plazo. Una aplicación del mismo nivel es otra instancia de una aplicación que se ejecuta en otro equipo.

Por ejemplo, el siguiente código usa el método estático GetDefault de la clase ProximityDevice para obtener una referencia al dispositivo de proximidad para el equipo local. Mediante la asociación con controladores de eventos con los eventos DeviceArrived y DeviceDeparted, puedes saber cuándo un dispositivo entra en proximidad o sale de ella.


function id(elementId) {
    return document.getElementById(elementId);
}

WinJS.Application.onmainwindowactivated = function (e) {
    if (e.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) {

        var proximityDevice = Windows.Networking.Proximity.ProximityDevice.getDefault();

        if (proximityDevice != null) {
            proximityDevice.addEventListener("devicearrived", 
                                             proximityDeviceArrived, false);
            proximityDevice.addEventListener("devicedeparted", 
                                             proximityDeviceDeparted, false);
        }
        else {
            id("MessageBlock").innerHTML += "Failed to initialize proximity device.<br/>";
        }

    }
}



function proximityDeviceArrived() {
    id("MessageBlock").innerHTML += "Proximate device arrived.<br/>";
}

function proximityDeviceDeparted() {
    id("MessageBlock").innerHTML += "Proximate device departed.<br/>";
}


Para obtener un código de ejemplo en el que se puede ver cómo crear una conexión de red entre dispositivos que se juntan con un gesto de pulsar o se conectan mediante búsqueda de dispositivos del mismo nivel, consulta Inicio rápido: conexión de aplicaciones mediante gesto de pulsar o exploración. Para obtener un código de ejemplo que muestra cómo compartir mensajes pequeños entre dispositivos unidos con un gesto de pulsar, consulta Inicio rápido: publicar mensajes y suscribirse a mensajes mediante gestos de tocar.

Importante  

Para admitir gestos de tocar en tu aplicación, debes habilitar la funcionalidad Proximidad.

Cómo determinar si se admite la proximidad

Como se mencionó anteriormente, un equipo debe tener un dispositivo instalado que implemente la interfaz de proximidad de Windows para usar la función de proximidad (para obtener información sobre cómo implementar la interfaz de proximidad de Windows, consulta el tema sobre la especificación de la implementación de transmisión en proximidad de Windows 8). Para determinar si hay un dispositivo compatible con proximidad instalado, comprueba la propiedad PeerFinder.SupportedDiscoveryTypes para ver si las conexiones Triggered son compatibles, comprueba si el método GetDefault devuelve NULL, o bien, obtén una lista de todos los dispositivos de proximidad y asegúrate de que la lista haga referencia al menos a un dispositivo. Para obtener una lista de todos los dispositivos de proximidad instalados, consulta el método GetDeviceSelector.

La proximidad solo se habilita cuando tu aplicación se ejecuta en primer plano

Todas las operaciones ProximityDevice y PeerFinder se deshabilitan si tu aplicación pasa al segundo plano. Solo puedes publicar mensajes y suscribirte para ellos o abrir conexiones de socket si tu aplicación se ejecuta en primer plano. Si abres una conexión de socket y tu aplicación pasa a un segundo plano, la conexión de socket permanecerá abierta.

Activar las aplicaciones mediante proximidad

Al usar PeerFinder y tocar para conectar tu aplicación con una aplicación del mismo nivel en otro equipo, Windows solicitará al usuario del otro equipo que active la aplicación si es que aún no está en ejecución o no está en primer en plano. Si la aplicación ya está en ejecución en primer plano, se generará el evento de activación sin pedir confirmación al usuario. También puedes activar una aplicación que no esté en ejecución en primer plano llamando a la sobrecarga del método PeerFinder.Start que toma un parámetro de cadena. El parámetro de cadena del método Start contiene un mensaje que se envía a la aplicación del mismo nivel. La aplicación se activará con el mensaje que se pasó a los argumentos de activación.

Cuando activas una aplicación del mismo nivel mediante un gesto de pulsar, se genera el evento Activated. El Kind de activación es Launch. Si activas el evento enviando un mensaje mediante el método PeerFinder.Start, el texto del mensaje puede recuperarse de la propiedad Arguments de los argumentos de inicio. Si tu aplicación se activa para abrir un StreamSocket, la propiedad Arguments devolverá la cadena Windows.Networking.Proximity.PeerFinder:StreamSocket. En este caso, establece la propiedad TriggeredConnectionStateChanged en un controlador de eventos adecuado y llama al método PeerFinder.Start para completar la conexión de sockets.


app.onactivated = function (args) {
    if (args.detail.kind === activation.ActivationKind.launch) {
        if (args.detail.arguments == "Windows.Networking.Proximity.PeerFinder:StreamSocket") {
            // Call PeerFinder.Start to begin multi-user mode.
        }
        else {
            // Respond to the message string in args.detail.arguments
        }

        args.setPromise(WinJS.UI.processAll());
    }
}


Consulta Inicio rápido: conexión de aplicaciones mediante gesto de pulsar o exploración si quieres ver un ejemplo de una aplicación que se activa mediante un gesto de pulsación y completa automáticamente una conexión de sockets.

Protocolo de comunicación de sockets

Cuando se envía información a una aplicación del mismo nivel mediante un objeto StreamSocket, depende de ti que definas el protocolo que establezca cómo se comparte esa información. Por ejemplo, puedes usar un formato XML, pares nombre-valor delimitados, etc. Cuando la clase PeerFindercrea una conexión de sockets entre aplicaciones del mismo nivel, conecta la aplicación, independientemente de cuál sea su versión. En consecuencia, puedes tener dos versiones distintas de la aplicación comunicándose entre sí. Por ejemplo, si una aplicación receptora espera dos valores de 4 bytes y una versión más reciente de dicha aplicación envía los datos como dos valores de 8 bytes para dar cabida a una mayor cantidad de información, se producirá un error en la aplicación receptora que espera los valores de 4 bytes cuando procese los datos. Por lo tanto, debes tener cuidado y asegurarte de que las versiones más recientes de tu aplicación se pueden comunicar con versiones anteriores a través del protocolo de comunicación que hayas establecido. Dicho de otro modo, confirma que las versiones anteriores de tu aplicación pueden ignorar sin errores la nueva información enviada por una versión más reciente de la aplicación.

Sugerencia  

Cuando las aplicaciones del mismo nivel se comunican, a menudo hay que indicar qué aplicación enviará el primer mensaje y cuál lo escuchará. Un modo de establecer si la aplicación va a enviar o a escuchar consiste en comparar streamSocket.information.localAddress.canonicalName con streamSocket.information.remoteHostName.canonicalName. Si compruebas que el nombre de host local sea más grande que el nombre del host remoto, siempre recibirás un resultado opuesto entre dos instancias de la aplicación.

Temas relacionados

Inicio rápido: conexión de aplicaciones mediante gesto de pulsar o exploración
Inicio rápido: publicar mensajes y suscribirse a mensajes mediante gestos de tocar
Directrices y lista de comprobación de proximidad
Pruebas y solución de problemas de la proximidad en las aplicaciones
Windows.Networking.Proximity namespace
Muestras
Muestra de proximidad

 

 

Mostrar:
© 2018 Microsoft