【问题标题】:Cache WebView in Xamarin.Forms for iOS在 Xamarin.Forms for iOS 中缓存 WebView
【发布时间】:2020-03-09 21:24:45
【问题描述】:

我正在 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

【问题讨论】:

  • 尝试使用 WkWebView 创建自定义渲染器,调用如下:NSUrlRequest request = new NSUrlRequest(url, NSUrlRequestCachePolicy.ReturnCacheDataElseLoad, 60);
  • 如何初始化缓存? WKWebkit 会处理这个问题还是我必须直接声明才能缓存它?
  • 因为我对 appdev 还很陌生,所以自定义渲染器吓到我了。您能否提供一些很好的学习参考资料,不胜感激。我想了解这一点,但入门非常困难。
  • 你可以看看custom-renderer

标签: c# xamarin xamarin.forms webview offline


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    相关资源
    最近更新 更多