Xamarin Forms WebView загрузка смешанного контента в Android - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть Xamarin Forms WebView. Источник - это веб-страница, которая содержит смешанный контент (ссылки на https и http-ресурсы). Он загружается в Xamarin Forms iOS без проблем, однако в Android он не загружается, и я подозреваю, что проблема в смешанном контенте.

Как установить MixedContentMode?

Есть документация на https://docs.microsoft.com/de-de/dotnet/api/xamarin.forms.platformconfiguration.androidspecific.webview.setmixedcontentmode?view=xamarin-forms

Но я не понимаю, как это использовать. Может кто-нибудь привести пример?

Большое спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Немного зависит, если вы определили свой WebView в коде или XAML.

Если вы определили его в коде, убедитесь, что у вас есть ссылка на него по имени переменной, например:

var myWebView = new WebView();

myWebView - это то, о чем я говорю в этом случае.

Затем включите это в верхнюю часть вашего класса:

using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;

Затем добавьте эту строку после инициализации WebView:

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

Из XAML добавьте правильное пространство имен в корень вашей страницы, например:

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

Затем на вашем WebView вы можете просто добавить еще один атрибут: <WebView ... android:WebView.MixedContentMode="AlwaysAllow" />

Это так называемые особенности платформы. Вы можете установить специфичные для платформы свойства непосредственно из общего кода Xamarin.Forms, в отличие от наличия собственного средства визуализации для одного простого свойства.

Подробнее об этом здесь: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/platform-specifics/ и потребление (на самом деле это конкретный случай) здесь: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/platform-specifics/consuming/android#enabling-mixed-content-in-a-webview

Примечание о фактической настройке, которую вы здесь устанавливаете, в примере я просто установил ее на AlwaysAllow, убедитесь, что вы знаете, что делает каждая опция, и установите ее как наиболее безопасную. Вот небольшое объяснение, взятое из Документов Microsoft:

  • AlwaysAllow - указывает, что WebView позволит источнику HTTPS загружать контент из источника HTTP.
  • NeverAllow - указывает, что WebView не позволит источнику HTTPS загружать контент из источника HTTP.
  • CompatibilityMode - указывает, что WebView будет пытаться быть совместимым с подходом последнего веб-браузера устройства. Немного Может быть разрешено загружать содержимое HTTP источником HTTPS и другими типы контента будут заблокированы. Типы контента, которые заблокировано или разрешено может меняться с каждым выпуском операционной системы.
...