Share via


Cómo configurar opciones de conectividad en segundo plano (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 explican las características de conectividad de red en segundo plano disponibles para una aplicación de Windows en tiempo de ejecución escrita en JavaScript y HTML y cómo configurar las opciones de conectividad en segundo plano.

Lo que debes saber

Tecnologías

  • IXMLHTTPRequest2

    Habilita el acceso a recursos web usando una extensión del objeto XMLHttpRequest.

  • System.Net.Http

    Permite conectarse a servicios web con un cliente web moderno.

Requisitos previos

  • La siguiente información se aplica cualquier aplicación de Windows en tiempo de ejecución conectada o preparada para la red que dependa de conexiones de red permanentes. Este tema se aplica a las aplicaciones escritas en JavaScript y HTML para Windows 8.1, Windows Phone 8.1 y Windows Server 2012 R2. Para obtener más información acerca de las tareas en segundo plano aplicables a las aplicaciones JavaScript, consulta Dar soporte a tu aplicación mediante tareas en segundo plano.

    Para obtener más información sobre las aplicaciones de la Tienda Windows conectadas o preparadas para la red escritas en C++/XAML y aplicaciones que usan .NET Framework 4.5 en C#, VB.NET o C++ administrado en Windows 8.1 y Windows Server 2012 R2, consulta Cómo permanecer conectados en segundo plano.

Modelo de ciclo de vida para aplicaciones de la Tienda Windows

Windows 8 y posteriores presentan un nuevo modelo de ciclo de vida para las aplicaciones de Windows en tiempo de ejecución, que se diferencia del modelo usado para las aplicaciones de escritorio en Windows 8 y las aplicaciones de versiones anteriores de Windows. De manera predeterminada, el funcionamiento de una aplicación de Windows en tiempo de ejecución se suspende por completo cuando dicha aplicación pasa a segundo plano. Hay unas pocas excepciones a la suspensión de una aplicación (por ejemplo, cuando está imprimiendo, teniendo acceso a una secuencia de audio o transfiriendo archivos en segundo plano mediante Windows.Networking.BackgroundTransfer). En algunas de estas excepciones (Windows.Networking.BackgroundTransfer), aunque la aplicación siga suspendida, Windows continúa la transferencia de red en un proceso independiente.

Este nuevo modelo para las aplicaciones de Windows en tiempo de ejecución mejora la capacidad de respuesta de la aplicación que se ejecuta en primer plano y, además, reduce la energía consumida en general por el sistema. La reducción del consumo de energía prolonga el funcionamiento del sistema alimentado por batería hasta la próxima recarga. Además, este nuevo modelo proporciona un mecanismo para las aplicaciones que tienen que funcionar en segundo plano (como el protocolo de voz sobre IP [VoIP], la mensajería instantánea [MI] y el correo electrónico) para que el usuario final disfrute de una experiencia de conexión permanente. Esto significa que una aplicación que depende de una conexión de red de larga duración a un servidor de extremo remoto todavía puede funcionar cuando está suspendida. Existe un conflicto de exigencias entre estar siempre conectado para una aplicación en tiempo real e intentar al mismo tiempo reducir el consumo de energía y aumentar la capacidad de respuesta de las aplicaciones.

Para hacer posibles los escenarios de red en tiempo real para una aplicación de Windows en tiempo de ejecución escrita en JavaScript que deba estar siempre conectada, se han incluido varias características nuevas en Windows 8:

  • Tareas en segundo plano
  • Desencadenador del sistema para SessionConnected
  • Desencadenadores de hora
  • Servicios de notificaciones de inserción de Windows (WNS)
  • Notificaciones de inserción sin procesar

Estas características proporcionan soporte a las aplicaciones siempre conectadas que necesitan recibir notificaciones de inserción sin procesar cuando se suspende una aplicación de Windows en tiempo de ejecución. Estas aplicaciones también se describen como siempre accesibles. Este tema se centra en cómo un desarrollador puede usar desencadenadores de notificaciones de inserción y WNS o desencadenadores de red para crear una aplicación siempre conectada en tiempo real. Estas características también necesitan que la aplicación sea de pantalla de bloqueo.

Una aplicación de red también puede usar otras características de tareas en segundo plano. Estos son algunos de los otros desencadenadores que una aplicación de Windows en tiempo de ejecución puede usar:

  • Desencadenadores de mantenimiento (eventos temporales periódicos para mantenimiento)
  • Desencadenadores del sistema para usuarios y sesiones (sesión de usuario conectada y desconectada, usuario presente y ausente, y cambio de identificador en línea)
  • Desencadenadores del sistema para el estado de red (cambio de estado de red, Internet disponible o no disponible)
  • Desencadenadores del sistema para la pantalla de bloqueo (agregar o quitar aplicación)

Los desencadenadores de hora se podrían usar cuando una aplicación no necesite conectividad en tiempo real, pero tenga que ejecutarse brevemente en algún intervalo. Se podría usar un desencadenador del sistema cuando la aplicación necesite conocer eventos (por ejemplo, la disponibilidad de la conectividad a Internet o la presencia del usuario). Se pueden combinar diversos desencadenadores en una aplicación para permitir varios escenarios. Para obtener más información, consulta Dar soporte a tu aplicación mediante tareas en segundo plano.

La mayoría de las aplicaciones de Windows en tiempo de ejecución no necesitará usar las notificaciones de inserción sin procesar detalladas en este tema. Una aplicación puede dar la impresión de que se está ejecutando siempre en segundo plano mediante un icono dinámico o un icono dinámico con notificaciones de inserción (que no sean notificaciones de inserción sin procesar) de WNS. La aplicación no tiene por qué ser de pantalla de bloqueo (esto se describe más adelante en este tema) ni ejecutarse en segundo plano para usar un icono dinámico. Sin embargo, debe estar en la pantalla de bloqueo para usar un icono dinámico con notificaciones de inserción sin procesar.

Requisitos para una aplicación siempre conectada

Normalmente se necesitan dos elementos para que una aplicación esté siempre conectada y accesible:

  • Un proceso de larga duración para asegurarse de que la aplicación reciba las notificaciones de red entrantes y las procese rápidamente.
  • Una conexión de red de larga duración a un extremo remoto que pueda recibir y enviar datos según se necesite.

En las versiones anteriores de Windows, las aplicaciones se siguen ejecutando cuando pierden el foco (en segundo plano). Estas aplicaciones pueden mantener conexiones de larga duración porque pueden enviar y recibir datos, y mensajes de conexión persistente, mientras están en segundo plano. Permitir que las aplicaciones se ejecuten en segundo plano consume recursos, lo que puede afectar a la capacidad de respuesta de otras aplicaciones y a la duración de la batería.

Aplicaciones de Windows en tiempo de ejecución y la pantalla de bloqueo

Windows 8 presenta un nuevo modelo de software que suspende las aplicaciones de Windows en tiempo de ejecución cuando pasan a segundo plano. Una vez suspendida una aplicación, es posible que todos los paquetes que el sistema reciba no se entreguen de inmediato a la aplicación y que se descarten los paquetes de red entrantes. Ningún paquete nuevo se envía cuando la aplicación está suspendida. Debido a estas condiciones, las conexiones de red existentes se pueden cerrar.

Para estar siempre conectada, la aplicación debe además ser de pantalla de bloqueo. Una aplicación de pantalla de bloqueo es un tipo especial de aplicación que puede mostrar notificaciones en la pantalla de bloqueo y ejecutar código en segundo plano cuando la aplicación no está en primer plano. Las únicas aplicaciones que pueden ser de pantalla de bloqueo son las que usan una o varias tareas en segundo plano.

Las aplicaciones de pantalla de bloqueo tienen algunas capacidades especiales:

  • Pueden recibir una notificación de inserción sin procesar de WNS que puede ejecutar código cuando se recibe la notificación.
  • Pueden ejecutar código cuando se activa un desencadenador de hora.
  • Pueden ejecutar código cuando se inicia una sesión de usuario.

Las aplicaciones ancladas a la pantalla de bloqueo pueden presentar información al usuario cuando están en segundo plano. Para hacerlo, actualizan y muestran un icono de notificación en la pantalla de bloqueo cuando hay nueva información. Además, estas aplicaciones pueden mostrar una notificación en pantalla cuando llegue un mensaje. Si se pulsa la notificación o se hace clic en ella, se pide al usuario que desbloquee el dispositivo. Cuando se desbloquea, se inicia la aplicación correspondiente a la notificación con información de contexto.

Las aplicaciones de pantalla de bloqueo tienen algunas limitaciones notables. Un usuario puede tener un máximo de siete aplicaciones de pantalla de bloqueo en un momento dado. Un usuario puede agregar o quitar una aplicación de la pantalla de bloqueo en cualquier momento.

Las aplicaciones de pantalla de bloqueo son muy útiles para proporcionar información a los usuarios sobre cosas que puedan haberse perdido mientras no estaban usando el dispositivo. También son útiles para proporcionar notificaciones en pantalla de eventos que requieran la interacción inmediata del usuario, como una llamada telefónica entrante, un mensaje instantáneo recibido o un correo electrónico urgente.

La mayoría de las aplicaciones no tienen necesidad de ser aplicaciones de pantalla de bloqueo. Cuando se suspende una aplicación en segundo plano, puede usar notificaciones de inserción (en lugar de notificaciones de inserción sin procesar) de WNS para actualizar un icono dinámico y dar a los usuarios la impresión de que se está ejecutando la aplicación con contenido actualizado. Las aplicaciones también pueden usar WNS para generar una notificación del sistema para el usuario en cualquier momento o para actualizar el recuento de la notificación en el icono de la aplicación.

Como se permite un número limitado de aplicaciones de pantalla de bloqueo, deberías planear el diseño de la aplicación de modo que funcione aunque no tenga permisos de aplicación de pantalla de bloqueo. El usuario debe permitir de forma explícita que se agregue una aplicación a la pantalla de bloqueo. La aplicación debería funcionar siempre cuando esté visible en primer plano. El ser una aplicación de pantalla de bloqueo permite simplemente que la aplicación realice algunos de los mismos escenarios cuando está en segundo plano.

Hay una característica que permite que una aplicación escrita en JavaScript y HTML reciba paquetes de red entrantes cuando está en segundo plano.

  • Notificaciones de inserción sin procesar que el sistema recibe y que hacen que se ejecute una tarea en segundo plano en la aplicación. Con esta característica, la aplicación recibe los datos sin procesar de Servicios de notificaciones de inserción de Windows (WNS). La aplicación debe comprender el contenido de estos datos. La aplicación debe registrarse en WNS para recibir la notificación de inserción sin procesar.

A continuación, se tratan varios mecanismos que sirven para hacer posibles escenarios en tiempo real para las aplicaciones que se colocan en la pantalla de bloqueo. Cada uno tiene ventajas y desventajas. Los mecanismos no se excluyen entre sí y se pueden combinar en algunas aplicaciones.

Usar WNS en aplicaciones de la Tienda Windows

WNS es un servicio de nube hospedado por Microsoft para Windows 8 que las aplicaciones de Windows en tiempo de ejecución pueden usar para recibir notificaciones que pueden ejecutar código, actualizar un icono dinámico o generar una notificación en pantalla. Para usar WNS, el equipo local debe estar conectado a Internet, a fin de que el servicio WNS se pueda comunicar con él. Si quieres obtener más información, consulta la introducción a las notificaciones de inserción.

Una aplicación de Windows en tiempo de ejecución en primer plano puede usar WNS para actualizar iconos dinámicos, mostrar notificaciones al usuario o actualizar distintivos. No es necesario que las aplicaciones estén en la pantalla de bloqueo para usar WNS. Deberías sopesar la posibilidad de usar WNS en tu aplicación si esta debe ejecutar código en respuesta a una notificación de inserción.

En el caso de las aplicaciones que no necesitan estar en la pantalla de bloqueo (la mayoría), se puede usar WNS para proporcionar una actualización de icono dinámico.

Si anclas tu aplicación de Windows en tiempo de ejecución a la pantalla de bloqueo y usas WNS en segundo plano, la aplicación puede recibir notificaciones de inserción sin procesar de WNS en tiempo real y mostrarlas en la pantalla de bloqueo como una notificación o una actualización de distintivo. Cuando se entrega una notificación de inserción sin procesar a una aplicación de pantalla de bloqueo, esta puede ejecutar código en respuesta a la notificación. WNS puede resultar energéticamente más eficiente que usar los desencadenadores de red disponibles para las aplicaciones de la Tienda Windows escritas en C++/XAML y las que usen .NET Framework 4.5 en C#, VB.NET o C++ administrado en Windows 8.1 y Windows Server 2012 R2.

WNS ofrece varias ventajas:

  • WNS ofrece el mecanismo con mayor eficiencia energética para entregar notificaciones en tiempo real a aplicaciones de pantalla de bloqueo.
  • WNS simplifica el modelo de desarrollo para tu aplicación. En la mayoría de los escenarios, los desarrolladores no tienen que escribir tareas en segundo plano, ya que el sistema operativo presenta los iconos o la notificación del sistema. En algunos escenarios, si la aplicación debe ejecutar una tarea en segundo plano, necesita registrar la notificación de inserción sin procesar y la tarea en segundo plano que se va a ejecutar.
  • No es necesario mantener una conexión de socket persistente entre la aplicación cliente y un servidor remoto porque Windows mantiene la conexión con WNS. Como resultado, no se necesita consumir recursos adicionales para enviar mensajes de conexión persistente.
  • Una sola conexión WNS entre el cliente y el servicio de nube puede admitir todas las aplicaciones del equipo local, lo que puede aumentar la eficiencia de uso de batería para el cliente.
  • Puede que el costo operativo del servicio del lado servidor se vea reducido, porque no es necesario mantener muchas conexiones de socket TCP detenidas entre el cliente y el servicio remoto.
  • Tu aplicación no tiene necesidad de residir en memoria en todo momento, porque se puede finalizar y WNS seguirá actualizando el icono, generando una notificación del sistema o desencadenando una tarea en segundo plano que se ejecutará al recibirse una notificación de inserción sin procesar entrante.
  • Las tareas en segundo plano que usan notificaciones de inserción sin procesar se pueden escribir en JavaScript, C++/XAML y con .NET Framework 4.5 en C#, VB.NET o C++ administrado en Windows 8.1 y Windows Server 2012 R2.

La característica de desencadenador de red con ControlChannelTrigger no está disponible en JavaScript.

Nota  ControlChannelTrigger no se admite en Windows Phone.

 

Las redes en segundo plano que usan desencadenadores de red solo se pueden escribir en JavaScript, C++/XAML y con .NET Framework 4.5 en C#, VB.NET o C++ administrado en Windows 8 y Windows Server 2012. Para obtener más información, consulta Cómo permanecer conectados en segundo plano.

WNS también tiene algunas limitaciones que pueden afectar a algunas aplicaciones. WNS no está disponible para un equipo local que esté conectado a una red doméstica o de trabajo privada que bloquee el acceso público a Internet. Además, algunos firewalls de red pueden bloquear WNS aunque el acceso a Internet esté disponible. Hay algunas otras desventajas por usar WNS que deberías considerar. En concreto, aunque se hace lo posible por entregar las notificaciones, no hay garantías de que se logre. El tamaño máximo de la carga en una notificación de inserción sin procesar es de 5 kilobytes.

Dadas las ventajas, recomendamos que los desarrolladores que creen aplicaciones de VoIP, MI o correo electrónico consideren usar notificaciones de WNS para las aplicaciones de pantalla de bloqueo; o alternativas, si no cumplen sus requisitos.

No hay necesidad de crear una aplicación de pantalla de bloqueo si simplemente quieres actualizar un icono dinámico o generar una notificación del sistema con WNS. Se necesita una aplicación de pantalla de bloqueo mientras se usa WNS solamente cuando la aplicación necesita una notificación de inserción sin procesar para desencadenar la ejecución de una tarea en segundo plano.

Usar desencadenadores de hora o de evento del sistema en aplicaciones de Windows en tiempo de ejecución

Las aplicaciones de pantalla de bloqueo se pueden configurar para ejecutar código periódicamente mediante un desencadenador de hora con un intervalo mínimo de 15 minutos. Un ejemplo es cuando se necesita realizar un sondeo para mensajes de correo electrónico nuevos, posiblemente cuando una aplicación está conectada a un servidor de correo electrónico POP3 o IMAP.

Las aplicaciones de pantalla de bloqueo también pueden usar un desencadenador de evento del sistema para ejecutar código cuando el usuario inicia sesión en el equipo local (desencadenador del sistema para el inicio de sesión). Un ejemplo es iniciar la sesión del usuario en un servicio de mensajería instantánea cuando inician una sesión de usuario, para que se puedan recibir los mensajes instantáneos.

En este tema nos centramos en la creación de aplicaciones de pantalla de bloqueo que usen notificaciones de inserción sin procesar con WNS o la característica de desencadenador de red. Si quieres más información sobre el uso de un temporizador, consulta el procedimiento para ejecutar una tarea en segundo plano en un temporizador. Para más información sobre las tareas en segundo plano, consulta el tema acerca de cómo dar soporte a tu aplicación mediante tareas en segundo plano.

Tarea en segundo plano y espacio aislado

La vigencia de una tarea en segundo plano se determina con la función que implementa la tarea en segundo plano. Para asegurar que las tareas en segundo plano no afecten negativamente la duración de la batería, Windows aplica un límite en términos de CPU y recursos de E/S de red que una aplicación puede usar durante tareas en segundo plano. Cada aplicación obtiene una cuota de estos recursos periódicamente y al agotarse esta cuota se suspende la tarea en segundo plano de tu aplicación. Una aplicación debe ser resistente a la suspensión debido al espacio aislado.

Para obtener más información, consulta el tema sobre Dar soporte a tu aplicación mediante tareas en segundo plano.

Pasos posteriores

Para obtener más información sobre cómo crear una aplicación de pantalla de bloqueo para que reciba notificaciones de red en segundo plano que usan notificaciones de inserción sin procesar, consulta Cómo crear una aplicación de pantalla de bloqueo que usa notificaciones de inserción sin procesar en segundo plano.

Para obtener más información sobre el proceso de registrar un canal de notificaciones de inserción y enviarlo al servidor, registrar una tarea en segundo plano para que una notificación de inserción sin procesar la active, enviar una notificación de inserción sin procesar al canal y activar la tarea en segundo plano, consulta Cómo usar WNS para entregar notificaciones de inserción sin procesar a una aplicación de pantalla de bloqueo.

Para obtener más información sobre cómo escribir una tarea en segundo plano para recibir notificaciones de red en segundo plano que usan notificaciones de inserción sin procesar, consulta Cómo escribir una tarea en segundo plano para notificaciones de inserción sin procesar.

Para obtener más información sobre las directrices y listas de comprobación para usar notificaciones de inserción sin procesar, consulta Directrices y lista de comprobación para notificaciones de inserción sin procesar.

Temas relacionados

Otros recursos

Agregar compatibilidad para redes

Redes en segundo plano

Introducción a las notificaciones

Directrices y lista de comprobación de notificaciones sin procesar

Cómo autenticar con los Servicios de notificaciones de inserción de Windows (WNS)

Cómo usar WNS para entregar notificaciones de inserción sin procesar a una aplicación de pantalla de bloqueo

Cómo escribir una tarea en segundo plano para notificaciones de inserción sin procesar

Introducción a las pantallas de bloqueo

Introducción a las notificaciones de inserción

Cómo crear una aplicación de pantalla de bloqueo que usa notificaciones de inserción sin procesar en segundo plano

Cómo permanecer conectados en segundo plano

Dar soporte a tu aplicación mediante tareas en segundo plano

Introducción a los iconos y a las notificaciones de icono

Introducción a las notificaciones del sistema

Transferencia de datos en segundo plano

Solución de problemas y depuración de las conexiones de red

Referencia

ControlChannelTrigger

HttpClient

HttpClientHandler

IXMLHTTPRequest2

MessageWebSocket

StreamSocket

StreamWebSocket

System.Net.Http

Windows.ApplicationModel.Background

Windows.Networking.BackgroundTransfer

Windows.Networking.PushNotifications

Windows.Networking.Sockets

Muestras

Muestra de tarea en segundo plano

Muestra de aplicaciones de pantalla de bloqueo

Ejemplo de notificaciones de inserción y periódicas del lado cliente

Ejemplo de notificaciones sin procesar