Как включить кэширование веб-страниц для WKWebView в Xamarin: iOS? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть приложение Xamarin Forms, которое использует компонент WebView для отображения нашего веб-сайта PWA. Нам нужен компонент WebView для отображения кэшированных веб-страниц, когда у пользователя нет соединения inte rnet. Это прекрасно работает в проекте Xamarin: Android без дополнительного кода. Однако WKWebView, отображаемый для проекта Xamarin: iOS, не отображает никаких кэшированных страниц.

Я довольно новичок в разработке Xamarin и не уверен, есть ли способ включить кэширование для проекта iOS, чтобы он работал автономно (как проект Android). Кто-нибудь знает, как заставить WKWebView обслуживать кэшированные веб-страницы, когда нет соединения inte rnet?

1 Ответ

0 голосов
/ 16 апреля 2020

Существует ReturnCacheDataElseLoad тип кэша NSUrlRequestCachePolicy , вы можете использовать его для загрузки данных кэша, прежде чем загружать их из сети. NSURLRequestReturnCacheDataElseLoad

Использовать существующие данные кэша, независимо от возраста или даты окончания срока действия, загружая из исходного источника, только если нет кэшированных данных.

Поэтому , кодировка iOS Renderer следующим образом:

public class CustomWebViewRenderer :WkWebViewRenderer
{
    protected override void OnElementChanged(VisualElementChangedEventArgs e)
    {
        base.OnElementChanged(e);

        if(e.NewElement != null)
        {
            NSUrlRequest request = new NSUrlRequest(new NSUrl("https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview"), NSUrlRequestCachePolicy.ReturnCacheDataElseLoad, 5);
            LoadRequest(request);
        }
    }
}
...