Compartir vía


Contenido mixto de WebView en Android

Esta característica específica de la plataforma Android controla si un elemento WebView puede mostrar contenido mixto en aplicaciones destinadas a la API 21 o versiones posteriores. El contenido mixto es contenido que se carga inicialmente a través de una conexión HTTPS, pero que carga recursos (como imágenes, audio, vídeo, hojas de estilos, scripts) a través de una conexión HTTP. Se consume en XAML estableciendo la propiedad adjunta WebView.MixedContentMode en un valor de la enumeración MixedContentHandling:

<ContentPage ...
             xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core">
    <WebView ... android:WebView.MixedContentMode="AlwaysAllow" />
</ContentPage>

Como alternativa, se puede consumir desde C# mediante la API fluida:

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
...

webView.On<Android>().SetMixedContentMode(MixedContentHandling.AlwaysAllow);

El método WebView.On<Android> especifica que esta plataforma específica solo se ejecutará en Android. El método WebView.SetMixedContentMode, en el espacio de nombres Xamarin.Forms.PlatformConfiguration.AndroidSpecific, se usa para controlar si se puede mostrar contenido mixto, con la enumeración MixedContentHandling que proporciona tres valores posibles:

  • AlwaysAllow: indica que WebView permitirá que un origen HTTPS cargue contenido desde un origen HTTP.
  • NeverAllow: indica que WebView no permitirá que un origen HTTPS cargue contenido desde un origen HTTP.
  • CompatibilityMode: indica que WebView intentará ser compatible con el enfoque del explorador web del dispositivo más reciente. Se puede permitir que un origen HTTPS cargue contenido HTTP y otros tipos de contenido se bloquearán. Los tipos de contenido bloqueados o permitidos pueden cambiar con cada versión del sistema operativo.

El resultado es que se aplica un valor MixedContentHandling especificado a WebView, que controla si se puede mostrar contenido mixto:

Control de contenido mixto WebView específico de la plataforma