Procedimientos recomendados de desarrollo para aplicaciones WebView2

Cada equipo de desarrollo sigue diferentes prácticas al compilar su aplicación. Al compilar aplicaciones de producción de WebView2, se recomienda seguir estas recomendaciones y procedimientos recomendados.

Por lo general, se recomienda usar Evergreen WebView2 Runtime. La distribución en tiempo de ejecución de versión fija solo se recomienda para las aplicaciones que tienen requisitos de compatibilidad estrictos. El tiempo de ejecución evergreen se actualiza automáticamente en el cliente, de modo que las características más recientes y las revisiones de seguridad estén disponibles para la aplicación WebView2. El tiempo de ejecución evergreen también requiere menos espacio de almacenamiento en el disco que el tiempo de ejecución de versión fija.

Si usa el entorno de ejecución Evergreen, antes de ejecutar la aplicación WebView2, compruebe si el runtime de Evergreen WebView2 está instalado en el cliente. Consulte Implementación del entorno de ejecución de Evergreen WebView2.

Ejecutar pruebas de compatibilidad con regularidad cuando se usa Evergreen Runtime

Cuando se usa Evergreen WebView2 Runtime, el tiempo de ejecución se actualiza automáticamente, por lo que debe ejecutar periódicamente pruebas de compatibilidad. Para asegurarse de que la aplicación WebView2 seguirá funcionando según lo esperado, pruebe el contenido web en el control WebView2 con los canales Microsoft Edge Insider (versión preliminar) (Beta, Desarrollo o Canary).

Esta guía es similar a la que proporcionamos a los desarrolladores web. Consulta Probar la aplicación para obtener compatibilidad con el reenvío.

Probar si las API más recientes son compatibles con el entorno de ejecución de WebView2 instalado

Para ejecutar una aplicación WebView2 desarrollada con una versión determinada del SDK de Webview2, el cliente debe tener instalada una versión compatible de WebView2 Runtime. Dado que las API se agregan continuamente a WebView2, también se publican nuevas versiones del entorno de ejecución para admitir las nuevas API. Use la detección de características para asegurarse de que las API más recientes que usa la aplicación WebView2 son compatibles con el entorno de ejecución de WebView2 instalado en el cliente.

Si usa evergreen WebView2 Runtime, hay algunos escenarios en los que el tiempo de ejecución de un cliente no se ha actualizado automáticamente a la versión más reciente. Por ejemplo, si un cliente no tiene acceso a Internet, el tiempo de ejecución no se actualiza automáticamente.

Además, algunas directivas de grupo pausan la actualización del entorno de ejecución. Al insertar una actualización en la aplicación WebView2, es posible que la aplicación no funcione si intenta llamar a las API más recientes que no están disponibles en el entorno de ejecución instalado del cliente.

Para resolver esta situación, antes de que el código llame a una API WebView2 agregada recientemente, pruebe si esa API está disponible en el entorno de ejecución instalado del cliente. Esta prueba de funcionalidad más reciente es similar a otros procedimientos recomendados de desarrollo web que detectan características admitidas antes de usar nuevas API web. Para probar la disponibilidad de la API en el entorno de ejecución instalado, use:

  • QueryInterface en C/C++.
  • Bloque try/catch en .NET o WinUI.

Consulte Detección de características para comprobar si el entorno de ejecución instalado admite las API agregadas recientemente.

Actualización del entorno de ejecución de versión fija

Si usa el entorno de ejecución webView2 de versión fija, asegúrese de actualizar periódicamente el entorno de ejecución de WebView2 empaquetado con la aplicación para reducir los riesgos de seguridad. Al usar contenido de terceros en aplicaciones webview2, considere siempre que el contenido no es de confianza. Consulte Modo de distribución de versión fija.

Administración de nuevas versiones de Evergreen Runtime

Cuando se descarga una nueva versión del runtime de Evergreen WebView2 en el cliente, las aplicaciones WebView2 que se ejecutan siguen usando la versión anterior del tiempo de ejecución, hasta que se publique el proceso del explorador. Este comportamiento permite que las aplicaciones se ejecuten continuamente e impide que se elimine el tiempo de ejecución anterior. Para usar la nueva versión del entorno de ejecución, debe liberar todas las referencias a los objetos de entorno WebView2 anteriores o reiniciar la aplicación. La próxima vez que la aplicación cree un nuevo entorno WebView2, la aplicación usará la nueva versión del entorno de ejecución.

Cuando hay disponible una nueva versión del entorno de ejecución, la aplicación puede realizar acciones automáticamente, como notificar al usuario que reinicie la aplicación. Para detectar que hay disponible una nueva versión del entorno de ejecución, puede usar el evento add_NewBrowserVersionAvailable (Win32) o CoreWebView2Environment.NewBrowserVersionAvailable (.NET) en el código. Si el código controla el reinicio de la aplicación, considere la posibilidad de guardar el estado del usuario antes de que se cierre la aplicación WebView2.

Administración de la duración de la carpeta de datos de usuario

Las aplicaciones WebView2 crean una carpeta de datos de usuario para almacenar datos como cookies, credenciales y permisos. Después de crear la carpeta, la aplicación es responsable de administrar la duración de la carpeta de datos del usuario. Por ejemplo, la aplicación debe realizar la limpieza cuando se desinstala la aplicación. Consulte Administrar carpetas de datos de usuario.

Controlar errores de proceso en tiempo de ejecución

La aplicación WebView2 debe escuchar y controlar el ProcessFailed evento, de modo que la aplicación pueda recuperarse de los errores de los procesos en tiempo de ejecución que admiten el proceso de la aplicación WebView2.

Las aplicaciones WebView2 son compatibles con una colección de procesos en tiempo de ejecución que se ejecutan junto con el proceso de aplicación. Estos procesos en tiempo de ejecución auxiliares pueden producir un error por varias razones, como quedarse sin memoria o ser terminados por el usuario. Cuando se produce un error en un proceso en tiempo de ejecución auxiliar, WebView2 notifica a la aplicación generando el evento ProcessFailed.

Controladores de eventos en el objeto de entorno

Si alguno de los controladores de eventos de la aplicación en el objeto de entorno contiene una referencia al objeto de entorno y la aplicación simplemente libera la referencia al entorno y a los controladores de eventos sin quitar los controladores de eventos, puede haber una referencia circular entre el objeto de entorno y los objetos de controlador, que pierden memoria.

Para evitar una pérdida de memoria de este tipo:

  • Para cualquier controlador de eventos agregado, quite el controlador de eventos antes de liberar el objeto de entorno.

  • Evite mantener una referencia al objeto de entorno en un controlador de eventos. En su lugar, el controlador de eventos puede acceder al objeto de entorno desde el sender argumento de la devolución de llamada "event completed".

  • Si quieres que la aplicación contenga una referencia a un objeto WebView2, usa una referencia débil siempre que sea posible.

Para cualquier aplicación WebView2, asegúrese de seguir nuestras recomendaciones en Desarrollo de aplicaciones WebView2 seguras.