Xamarin.Forms WebView baseurl无法在设备上工作(iOS 10.1)



我有一个xamarin.forms应用程序,它使用hybridwebview(https://develoverer.xamarin.com/guides/guides/xamarin-forms/custom-renderer/custom-renderer/hhybridwebview/)来显示HTML文档。我使用baseurl将本地CSS和JS加载到文档中。该代码在iOS 9.x.上工作正常。

但是,在升级到iOS 10后,代码在iOS模拟器上工作,但在实际设备上不使用。在设备上,它不会从本地存储中加载CSS。

这是我正在使用的测试代码。它可以在模拟器上使用,但在设备上不起作用。

    async void Handle_TestButtonClicked (object sender, System.EventArgs e)
    {
        string css = @"
            body {
                background-color: powderblue;
            }
            h1 {
                color: blue;
            }
            p {
                color: red;
            }
            ";
        var folder = await AppGlobals.AppStorage.GetContentFolder ();
        string filename = "styles.css";
        await AppGlobals.AppStorage.WriteToFile (folder, filename, css);
        string html = @"<!DOCTYPE html>
                        <html>
                        <head>
                          <link rel=""stylesheet"" href=""styles.css"">
                        </head>
                        <body>
                        <h1>This is a heading</h1>
                        <p>This is a paragraph.</p>
                        </body>
                        </html>";
        this.DocumentView.Html = html;
    }

在HybridWebView中,我使用以下代码设置baseurl

            if (Element.Html != null) {
                string baseFolderPath = await AppStorage.GetInstance ().GetContentFolderPath ();
                var baseUrl = new NSUrl (baseFolderPath, true);
                Control.LoadHtmlString (Element.Html, baseUrl);
            }

我正在使用pclstorage库来读/写入本地存储。

我认为loadhtmlstring被打破了加载本地CSS/JS等。

我通过将HTML字符串写入本地文件,然后使用LoadFileUrl加载它来解决此问题。这是按预期工作

if (!String.IsNullOrEmpty (Element.Uri)) {
                    string filePath = await GetFilePathInContentFolderFromUri (Element.Uri);
                    var fileUrl = new NSUrl (filePath, false);
                    Control.LoadFileUrl (fileUrl, fileUrl);
                }

另一个工作可能是将所需的CSS/JS注入HTML文档本身并仍在使用LoadHtmlString,这起作用。