C# 在Xamarin.Forms for iOS中缓存WebView

C# 在Xamarin.Forms for iOS中缓存WebView,c#,xamarin,xamarin.forms,webview,offline,C#,Xamarin,Xamarin.forms,Webview,Offline,我正在用Xamarin.Forms(C#)创建一个跨平台的应用程序。我有一个网站,也是一个pwa(进步网络应用程序)。我试图通过WebView访问它,并且允许脱机查看缓存的最后一个数据。我通过启用以下功能使其在Android上完美运行: webView.Settings.SetAppCacheEnabled(true) 然而,我似乎无法让它在iOS上正常工作。 我对应用程序开发非常陌生,正在努力学习。任何学习方面的帮助都将不胜感激 简单的模拟/poc示例: ToolbarItem

我正在用Xamarin.Forms(C#)创建一个跨平台的应用程序。我有一个网站,也是一个pwa(进步网络应用程序)。我试图通过WebView访问它,并且允许脱机查看缓存的最后一个数据。我通过启用以下功能使其在Android上完美运行:

webView.Settings.SetAppCacheEnabled(true)

然而,我似乎无法让它在iOS上正常工作。 我对应用程序开发非常陌生,正在努力学习。任何学习方面的帮助都将不胜感激

简单的模拟/poc示例:

        ToolbarItem refresh;
        WebView webView;

        public TestingWebCache() {
            InitializeComponent();
            Title = "Website";
            IconImageSource = "airport.png";
            webView = new WebView();

            refresh = new ToolbarItem {
                IconImageSource = "refresh.png"
            };
            refresh.Clicked += Refresh;
            ToolbarItems.Add(refresh);

            init();

            Content = webView;
        }

        private void init() {
            webView.Source = "https://www.google.com" //not the website im using but used for testing
        }

        private async void Refresh(object sender, EventArgs e) {
            TRCWebViewItem.Reload();
        }
我查阅了许多资源,包括iOS WKWebView文档。我有一种感觉,我只是错过了一个重要的信息,这将把一切联系在一起


我无法下载html并以这种方式显示,因为实际的网站它不仅仅是基本的html和CSS

这个问题通过让web开发人员在缓存存储之外设置应用程序缓存来解决。从iOS 10开始,webview默认设置为缓存webview,但AppCache必须在网站级别设置。如果只设置了缓存存储,Android可以处理,但iOS不能

通过让web开发人员在缓存存储之外还设置应用程序缓存,解决了此问题。从iOS 10开始,webview默认设置为缓存webview,但AppCache必须在网站级别设置。如果只设置了缓存存储,Android可以处理,但iOS不能

尝试使用WkWebView创建自定义呈现程序,调用如下命令:
NSUrlRequest request=new NSUrlRequest(url,NSUrlRequestCachePolicy.ReturnCacheDataElseLoad,60)如何初始化缓存?WKWebkit会处理这个问题吗?还是我必须直接声明才能缓存它?因为我对appdev还是那么陌生,自定义渲染器让我感到害怕。你能提供一些好的参考资料来学习吗?任何帮助都将不胜感激。我想了解这一点,但这在入门时是非常困难的。您可以看看如何尝试使用WkWebView创建自定义渲染器,调用如下:
NSUrlRequest request=new NSUrlRequest(url,NSUrlRequestCachePolicy.ReturnCacheDataElseLoad,60)如何初始化缓存?WKWebkit会处理这个问题吗?还是我必须直接声明才能缓存它?因为我对appdev还是那么陌生,自定义渲染器让我感到害怕。你能提供一些好的参考资料来学习吗?任何帮助都将不胜感激。我想了解这一点,但这是非常压倒性的开始。你可以看看