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

Probar y solucionar problemas de proximidad en las aplicaciones (aplicaciones de la Tienda Windows con JavaScript y HTML)

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.

Antes de comenzar

La proximidad conecta equipos "pulsando" dos equipos a la vez o buscando equipos dentro del alcance inalámbrico. Para probar las funcionalidades que responden a un gesto de pulsar, cada equipo debe tener un dispositivo de proximidad instalado. Para probar las funcionalidades que usan la búsqueda inalámbrica, cada equipo debe tener instalado un dispositivo inalámbrico compatible con Wi-Fi Direct.

Configuración para la prueba:  

Si no tienes hardware compatible con el gesto de pulsar de proximidad, como una radio de transmisión de datos en proximidad (NFC), puedes usar la muestra de controlador de proximidad que se incluye con las muestras del kit para controladores de Windows (WDK). Puedes usar la muestra de controlador para simular un gesto de pulsar en una conexión de red entre dos equipos. Para obtener información sobre cómo descargar el Kit para controladores de Windows, consulta el tema sobre el Kit para controladores de Windows (WDK). Una vez que instales el Kit para controladores de Windows y los ejemplos, podrás encontrar el ejemplo de controlador de proximidad en el directorio src\nfp de la ubicación donde hayas instalado los ejemplos del WDK. En el archivo NetNfpProvider.html del directorio src\nfp\net podrás encontrar instrucciones sobre cómo generar y ejecutar el simulador. Cuando inicies el simulador, se ejecutará en segundo plano mientras la aplicación de proximidad se ejecuta en primer plano. La aplicación debe estar en primer plano para que funcione la simulación de gesto de pulsar.

Conectar aplicaciones mediante la clase PeerFinder

Puedes usar la clase PeerFinder para crear una conexión de de socket entre la misma aplicación que se ejecuta en dos equipos distintos, es decir, una aplicación del mismo nivel. Con la clase PeerFinder puedes conectar aplicaciones del mismo nivel desde un gesto de pulsar, o puedes usar Wi-Fi Direct para buscar dispositivos del mismo nivel dentro del alcance inalámbrico. Los dos métodos para conectar aplicaciones del mismo nivel crean un socket abierto entre aplicaciones del mismo nivel, de modo que se recomienda que permitas que las dos funcionalidades de conexión, desencadenada (pulsar) y de búsqueda (Wi-Fi Direct), se admitan en tu aplicación.

Para ver un ejemplo de conexión de aplicaciones del mismo nivel, consulta el tema sobre el inicio rápido: conectar aplicaciones mediante gestos de pulsar o exploración o la muestra de proximidad en la galería de muestras. Para ver instrucciones sobre cómo crear aplicaciones que usan proximidad, consulta el tema sobre directrices para el desarrollo mediante la proximidad.

Hh967765.wedge(es-ar,WIN.10).gifProbar conexiones de aplicaciones del mismo nivel

  1. Instala tu aplicación en dos equipos e inicia la aplicación en los dos equipos.
  2. Anuncia una conexión del mismo nivel en los dos equipos. Para ello, haz una llamada al método Start.
  3. Para probar las conexiones desencadenadas, pulsa en los dos dispositivos a la vez.
  4. Asegúrate de que la interfaz de usuario de la aplicación refleje el estado del gesto de pulsar. Es decir, cuando se encuentre un dispositivo del mismo nivel, cuando los equipos estén en proceso de conectarse, etc. Para obtener más información, consulta el evento TriggeredConnectionStateChanged.
  5. Si la conexión se realiza correctamente, asegúrate de que la interfaz de usuario de la aplicación refleja que la funcionalidad de red está activa en los dos equipos.
  6. Si la conexión no es correcta, asegúrate de que la interfaz de usuario de la aplicación informa al usuario de que ha habido un error en la conexión de red.
  7. Para probar las conexiones inalámbricas, haz que uno de los equipos busque conexiones del mismo nivel disponibles. Para ello, haz una llamada al método FindAllPeersAsync.
  8. Si la conexión se realiza correctamente, asegúrate de que la interfaz de usuario de la aplicación refleja que la funcionalidad de red está activa en los dos equipos.
  9. Si la conexión no es correcta, asegúrate de que la interfaz de usuario de la aplicación informa al usuario de que ha habido un error en la conexión de red.
  10. Si tu aplicación admite conexiones a más de dos dispositivos del mismo nivel, amplía la prueba para que use varios equipos.

Si se ha instalado una aplicación que admite conexiones desencadenadas (pulsar) en dos equipos, cuando se solicite una conexión desde un equipo con un gesto de pulsar, se le pedirá al usuario del segundo equipo que inicie o instale la aplicación. La aplicación debe ejecutarse en primer plano en el equipo que hace la solicitud. Esta funcionalidad no se admite cuando se buscan conexiones mediante el método FindAllPeersAsync.

Hh967765.wedge(es-ar,WIN.10).gifProbar aplicaciones iniciadas desde un gesto de pulsar

  1. Instala la aplicación en dos equipos. Inicia la aplicación solo en el primer equipo.
  2. En el equipo que ejecuta la aplicación, anuncia una conexión del mismo nivel. Para ello, haz una llamada al método Start.
  3. Pulsa los dos equipos a la vez.
  4. En el segundo equipo, asegúrate de que se produzca una notificación que solicite al usuario que inicie la aplicación. Acepta la notificación.
  5. Asegúrate de la que la aplicación se inicia correctamente en el segundo equipo y de que la aplicación establece inmediatamente un socket de red de proximidad. Asegúrate de que la interfaz de usuario de la aplicación refleja que la funcionalidad de red está activa en los dos equipos.
  6. Si la aplicación no se inicia correctamente, asegúrate de que se refleje el intento fallido en la interfaz de usuario de la aplicación en el equipo que hace la solicitud. Si se inicia la aplicación, pero no se puede establecer un socket de red de proximidad, asegúrate de que se refleje el error en la interfaz de usuario de la aplicación en los dos equipos.

Tu aplicación debe escribirse de forma que administre el escenario en el que se rechace una solicitud para iniciar una aplicación del mismo nivel.

Hh967765.wedge(es-ar,WIN.10).gifProbar solicitudes rechazadas desde un gesto de pulsar

  1. Instala la aplicación en dos equipos. Inicia la aplicación solo en el primer equipo.
  2. En el equipo que ejecuta la aplicación, anuncia una conexión del mismo nivel. Para ello, haz una llamada al método Start.
  3. Pulsa los dos equipos a la vez.
  4. En el segundo equipo, asegúrate de que se produzca una notificación que solicite al usuario que inicie o instale la aplicación. Rechaza la notificación.
  5. Asegúrate de que la aplicación no se inicie en el segundo equipo y de que la interfaz de usuario de la aplicación que realiza la solicitud refleje que se ha rechazado la solicitud.

Publicación y suscripción de mensajes mediante la clase ProximityDevice

Puedes usar la clase ProximityDevice para publicar pequeños mensajes entre los equipos durante un gesto de pulsar. Los equipos deben estar dentro del alcance del hardware de proximidad instalado. Esto suele ser unos 2 o 3 cm.

Para publicar un mensaje durante un gesto de pulsar, usa el método PublishMessage, PublishBinaryMessage o PublishUriMessage en el equipo que lo publica y el método SubscribeForMessage en el equipo que lo recibe. Para ver un ejemplo de publicación y suscripción de mensajes, consulta el tema sobre el inicio rápido: publicar mensajes o suscribirse a mensajes mediante gestos de pulsar o Muestra de proximidad en la galería de muestras.

Hh967765.wedge(es-ar,WIN.10).gifProbar una aplicación que realiza publicaciones y suscripciones de mensajes

  1. Inicia la aplicación de la publicación en un equipo y la aplicación de la suscripción en otro equipo. Esto puede ser la misma aplicación en los dos equipos, pero no es necesario que sea así.
  2. Pon las aplicaciones en un estado de publicación y recepción de mensajes. Esto implica llamar a uno de los métodos de publicación en la aplicación que publica, y el método SubscribeForMessage en la aplicación que recibe el mensaje.
  3. Pulsa los dos equipos a la vez.
  4. Si el mensaje se transmite correctamente, asegúrate de que la interfaz de usuario de la aplicación suscriptora refleja que se ha recibido el mensaje. De forma opcional en la aplicación de publicación, puedes invocar la sobrecarga del método publish que incluye un parámetro para un controlador de eventos de tipo MessageTransmittedHandler al que se invoca cuando se ha transmitido el mensaje. En el código de este controlador de eventos puedes actualizar la interfaz de usuario de la aplicación de publicación para que refleje que el mensaje se transmitió correctamente.
  5. Si el mensaje no se puede publicar o si no se recibe, revisa el código de la aplicación para determinar cuál es el problema. Para conocer los pasos para la solución de problemas, consulta "No se puede recibir un mensaje para el que se ha realizado una publicación y una suscripción" en la sección "Solución de problemas" de este tema.
  6. Prueba que las dos aplicaciones puedan sacarse del estado de publicación y suscripción de un mensaje. En el equipo de publicación, llama al método StopPublishingMessage. En el equipo de suscripción, llama al método StopSubscribingForMessage. Después de pulsar los equipos a la vez, asegúrate de que el mensaje ya no se publica ni se recibe.

Solución de problemas

Si tu problema no se indica aquí, es posible que encuentres una respuesta en los foros de desarrolladores de Windows.

ProblemaPasos de solución de problemas
Pulsar no responde. Al conectar aplicaciones del mismo nivel con un gesto de pulsar, o al publicar y suscribirse a un mensaje durante un gesto de pulsar, el código para responder al gesto de pulsar no se ejecuta.

Asegúrate de que los equipos que participan en el gesto de pulsar se encuentran dentro de un alcance de proximidad de 2 cm como mínimo. Es posible que tengas que alinear los equipos de acuerdo con la ubicación del dispositivo de proximidad. Windows reproduce un sonido cuando los equipos entran dentro del alcance de proximidad.

Puedes usar los eventos DeviceArrived y DeviceDeparted para saber cuándo un dispositivo entra en proximidad o sale de ella. Agrega los controladores de eventos a tu código para los eventos DeviceArrived y DeviceDeparted. Si se ejecuta el código del controlador de eventos, eso significa que el gesto de pulsar fue correcto. Si no se ejecuta el código del controlador de eventos de los eventos DeviceArrived y DeviceDeparted, entonces es posible que tengas un problema con el hardware o el controlador de proximidad.

Si la aplicación usa la clase PeerFinder para crear una conexión desencadenada y se genera el eventoDeviceArrived, pero no se genera el evento TriggeredConnection, haz una comprobación de lo siguiente:

  • Las dos instancias de la aplicación han llamado al método Start antes de intentar conectarse con un gesto de pulsar.
  • No hay una conexión de socket abierta entre los equipos desde un gesto de pulsar anterior. Si este es el caso, asegúrate de que la aplicación llama al método Close en un socket que ya no se necesita. Si fuera necesario, para cerrar una conexión de socket abierta entre dos instancias del mismo nivel de la aplicación, sal de la aplicación y reiníciala.
La aplicación no se inicia después de un gesto de pulsar.

Asegúrate de que la aplicación se ejecuta en primer plano en al menos uno de los dos equipos que participan en el gesto de pulsar. De ser así, y si la aplicación sigue sin iniciarse después de pulsar, consulta los pasos de solución de problemas de "Pulsar no responde".

Si se genera el evento TriggeredConnection en la aplicación que se ejecuta en primer plano, pero no se solicita que se inicie la aplicación en el otro equipo que participa en el gesto de pulsar, asegúrate de que la aplicación está instalada correctamente. Si la aplicación se instala correctamente, se iniciará desde el icono de inicio y se conectará desde un gesto de pulsar mientras se ejecuta en primer plano.

No se encuentran dispositivos del mismo nivel durante la búsqueda.
  • Asegúrate de que la aplicación se está ejecutando en primer plano y de que has llamado al método Start en todos los equipo que realizan la búsqueda o que están disponibles para una conexión. Comprueba que la radio Wi-Fi esté habilitada en todos los equipos disponibles para una conexión. Puedes comprobar la configuración inalámbrica para asegurarte de que la radio Wi-Fi está habilitada. Puedes determinar si el equipo admite la búsqueda de dispositivos del mismo nivel mediante la propiedad SupportedDiscoveryTypes.

  • Asegúrate de que la aplicación que realiza la búsqueda no tiene una conexión de socket abierta desde una llamada anterior al método ConnectAsync. Si este es el caso, asegúrate de que la aplicación llama al método Close en un socket que ya no se necesita. Si fuera necesario, para cerrar una conexión de socket abierta entre dos instancias del mismo nivel de la aplicación, sal de la aplicación y reiníciala.

  • La búsqueda de dispositivos del mismo nivel sólo encontrará equipos del mismo nivel que ejecutan la aplicación habilitada para proximidad. Asegúrate de que la misma aplicación se esté ejecutando en todos los equipos con los que haces las pruebas. Solo puedes conectar dos equipos a la vez con el método ConnectAsync.

  • Si los equipos que intentas conectar están unidos a un dominio, es posible que la directiva de dominios impida una nueva conexión o que cierre una existente. Si la conexión se realiza correctamente en los equipos que no están unidos al dominio pero no se realiza en los equipos que están unidos al dominio, revisa las directivas de firewall de tu dominio.

  • Si se produce un error en las conexiones, es posible que se deba a una limitación de tu hardware Wi-Fi Direct. Intenta ejecutar la aplicación en los dos equipos con la radio inalámbrica activada, pero desconectados de todas las redes inalámbricas.

Un intento de conexión desde un gesto de pulsar produce un error después de un minuto.

Comprueba la configuración inalámbrica en los dos equipos que participan en el gesto de pulsar y asegúrate de que sus radios Wi-Fi y Bluetooth estén activadas. Si alguno de los equipos no tiene un dispositivo inalámbrico compatible con Wi-Fi Direct, o una radio Bluetooth, asegúrate de que los dos equipos estén conectados a la misma red.

No se puede recibir un mensaje para el que se ha realizado una publicación y una suscripción. Al publicar y suscribirse a mensajes, el equipo que realiza la suscripción no recibe el mensaje publicado.

En el equipo de publicación, puedes usar la sobrecarga del método PublishMessage, PublishUriMessage o PublishBinaryMessage que incluye un parámetro para un controlador de eventos de tipo MessageTransmittedHandler al que se invoca cuando se ha transmitido el mensaje. Si la llamada al método publicado es correcta y se ejecuta el código del controlador de eventos MessageTransmittedHandler, eso significa que el mensaje se ha transmitido correctamente.

En el equipo que realiza la suscripción, asegúrate de que el valor del parámetro messageType que has pasado al método SubscribeForMessage coincide con el valor del parámetro messageType que se pasó al método PublishMessage o PublishBinaryMessage (para el método PublishUriMessage, el valor messageType siempre es WindowsUri. Los valores de Tipo de mensaje distinguen mayúsculas de minúsculas.

 

Temas relacionados

Compatibilidad con proximidad y gestos de pulsar
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 pulsar
Directrices y lista de comprobación para proximidad
Windows.Networking.Proximity namespace
Muestras
Muestra de proximidad

 

 

Mostrar:
© 2018 Microsoft