【问题标题】:How do you enable webpage caching for WKWebView in Xamarin: iOS?如何在 Xamarin: iOS 中为 WKWebView 启用网页缓存?
【发布时间】:2020-07-28 17:17:10
【问题描述】:

我有一个 Xamarin Forms 应用程序,它使用 WebView 组件来显示我们的 PWA 网站。当用户没有互联网连接时,我们需要 WebView 组件来显示缓存的网页。这在 Xamarin: Android 项目中运行良好,无需额外代码。但是,为 Xamarin: iOS 项目呈现的 WKWebView 似乎没有显示任何缓存页面。

我是 Xamarin 开发的新手,不确定是否有办法为 iOS 项目启用缓存,以便它可以脱机运行(就像 Android 项目一样)。有谁知道在没有互联网连接的情况下如何让 WKWebView 提供缓存的网页?

【问题讨论】:

    标签: caching xamarin.forms webview xamarin.ios wkwebview


    【解决方案1】:

    有一个 NSUrlRequestCachePolicyReturnCacheDataElseLoad 缓存类型,您可以使用它先加载缓存数据,否则从 web 加载。

    看看苹果关于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);
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2020-02-08
      • 2020-08-22
      • 2015-01-22
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多