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

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

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 es una excelente manera de crear una experiencia de la aplicación compartida entre dos instancias de la aplicación que se ejecuten en dos dispositivos distintos. En una aplicación habilitada para proximidad, los usuarios de la aplicación solo tienen que pulsar en dos dispositivos para iniciar una conexión, o bien un usuario puede buscar otro dispositivo en el alcance inalámbrico que ejecute la aplicación. La búsqueda de aplicaciones del mismo nivel en otros PC se realiza mediante WiFi-Direct. En Windows Phone, la detección de aplicaciones del mismo nivel se lleva a cabo mediante Bluetooth y busca aplicaciones del mismo nivel que se estén ejecutando en otros teléfonos.

Para probar las funcionalidades que responden a un gesto de pulsar, cada dispositivo debe tener un dispositivo de proximidad instalado, como una radio de transmisión de datos en proximidad (NFC). Para probar las funcionalidades que usan la exploración inalámbrica en equipos, cada equipo debe ser compatible con Wi-Fi Direct.

Nota  Para probar las funcionalidades de exploración en las aplicaciones de la Tienda de Windows Phone, cada teléfono debe ser compatible con Bluetooth.

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 el controlador de muestra para simular un gesto de pulsar en una conexión de red entre dos dispositivos. Kit para controladores de Windows (WDK), consulta 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 compilar 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 del gesto de pulsar.

Conectar aplicaciones mediante la clase PeerFinder

Puedes usar la clase PeerFinder para crear una conexión de socket entre la misma aplicación que se ejecuta en dos dispositivos 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-es,WIN.10).gifProbar conexiones de aplicaciones del mismo nivel

  1. Instala tu aplicación en dos dispositivos e inicia la aplicación en ambos.
  2. Anuncia una conexión del mismo nivel en ambos dispositivos. 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 una conexión del mismo nivel, cuando los dispositivos 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 dispositivos.
  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 dispositivos busque conexiones del mismo nivel disponibles. Para ello, haz una llamada al método FindAllPeersAsync. La búsqueda solo se admite entre PC o entre teléfonos, pero no entre teléfonos y PC. El mecanismo mediante el cual se lleva a cabo la búsqueda es distinto para una aplicación que se ejecuta en un PC que para una aplicación que se ejecuta en un teléfono. En Windows Phone las búsquedas solo pueden llevarse a cabo mediante Bluetooth, mientras que en los PC solo pueden realizarse mediante WiFi-Direct.
  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 dispositivos.
  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 dispositivos.

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

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

  1. Instala la aplicación en dos dispositivos. Inicia la aplicación solo en el primer dispositivo.
  2. En el dispositivo que ejecuta la aplicación, anuncia una conexión del mismo nivel. Para ello, haz una llamada al método Start.
  3. Acerca los dispositivos.
  4. En el segundo dispositivo, 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 que la aplicación se inicia correctamente en el segundo dispositivo 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 dispositivos.
  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 dispositivo 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 dispositivos.

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-es,WIN.10).gifProbar solicitudes rechazadas desde un gesto de pulsar

  1. Instala la aplicación en dos dispositivos. Inicia la aplicación solo en el primer dispositivo.
  2. En el dispositivo que ejecuta la aplicación, anuncia una conexión del mismo nivel. Para ello, haz una llamada al método Start.
  3. Acerca los dispositivos.
  4. En el segundo dispositivo, 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 dispositivo 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 dispositivos durante un gesto de pulsar. Los dispositivos 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 dispositivo que lo publica y el método SubscribeForMessage en el dispositivo 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-es,WIN.10).gifProbar una aplicación que realiza publicaciones y suscripciones de mensajes

  1. Inicia la aplicación de la publicación en un dispositivo y la aplicación de la suscripción en otro. Puede ser la misma aplicación en los dos dispositivos, aunque no es obligatorio.
  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. Acerca los dispositivos.
  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 dispositivo de publicación, llama al método StopPublishingMessage. En el dispositivo de suscripción, llama al método StopSubscribingForMessage. Después de acercar los dispositivos, 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.

Problema Pasos 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 dispositivos 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 dispositivos según la ubicación del dispositivo de Proximidad. Windows reproduce un sonido cuando los dispositivos 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 dispositivos 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 dispositivos 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 dispositivo 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 dispositivos que realizan la búsqueda o que están disponibles para una conexión. Si buscas aplicaciones del mismo nivel en dispositivos Windows, comprueba que Wi-Fi Direct esté habilitado en todos los dispositivos disponibles para una conexión. Si buscas aplicaciones del mismo nivel en Windows Phone, comprueba que Bluetooth esté habilitado en todos los teléfonos. 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 aplicaciones del mismo nivel solo encontrará dispositivos 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 dispositivos con los que haces las pruebas. Solo puedes conectar dos dispositivos a la vez con el método ConnectAsync.

  • Si los dispositivos 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 dispositivos que no están unidos al dominio pero no se realiza en los dispositivos que están unidos al dominio, revisa las directivas de firewall de tu dominio.

  • Si las conexiones no se realizan correctamente en un equipo, 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 dispositivos 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 dispositivos no tiene un dispositivo inalámbrico compatible con Wi-Fi Direct o una radio Bluetooth, asegúrate de que ambos 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 dispositivo que realiza la suscripción no recibe el mensaje publicado.

En el dispositivo 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 llama 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 dispositivo 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 de messageType siempre es WindowsUri. Los valores de Tipo de mensaje distinguen mayúsculas de minúsculas.

 

Temas relacionados

Compatibilidad con proximidad y pulsación

Inicio rápido: conectar aplicaciones mediante gestos 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