WebKit webview(WKwebview)无法加载app目录之外的资源

问题描述 投票:1回答:1

由于UIWebview现已弃用,我们开始使用WKwebview。作为Cordova用户,我们添加了cordova-plugin-wkwebview-engine,如下所述:https://cordova.apache.org/news/2018/08/01/future-cordova-ios-webview.html

1 - 首先,我们的应用程序是构建和运送的,包括资源(图标,图像等),其路径以:file:///var/containers/Bundle/Application/[APP_ID]/[APP_NAME]/www/files/project/home/iconA.svg开头

正确显示这些资产。

2 - 然后在启动时,应用程序还会检查我们的后端是否有可用的更新。如果某些资产已更新,则应用程序会将其下载到数据目录中。上述资产的路径为:file:///var/mobile/Containers/Data/Application/[APP_ID]/Library/NoCloud//V1/files/project/home/iconA.svg

...但不显示这些资产。

NB1:在这两种情况下,资源都在background-image css属性中声明。

NB2:我们多年来一直在使用这个过程,并成功使用了前UIwebview。

-

在Safari的Web检查器的网络面板中,资源显示为红色,并显示一条红色消息,指示尝试加载时发生错误。没有错误代码,没有任何技术可以帮助,没有比此消息更详细的信息......

我运行了一些测试,似乎资源存在于给定路径的文件系统上。 (使用cordova-plugin-file我可以输出svg内容)。

那么,第一个结论是WKwebview无法访问app目录之外的资源?作为任何人的任何信息,经验分享?有没有人知道解决方法?

任何帮助将不胜感激。

来自法国的欢呼!

ios cordova wkwebview
1个回答
1
投票

花了一些时间,但最终解决了这个问题。很简单,但你需要知道如何..首先确保你使用的是最新版本的webview。在我的情况下,这是2.2.0

ionic cordova plugin rm cordova-plugin-ionic-webview
ionic cordova plugin add cordova-plugin-ionic-webview@latest

现在检查您的代码并确保正确引用www之外的所有图像。不会工作:

cdvfile://
file://

将工作:

http://localhost:8080/
http://localhost:8080/_file_/
absolute paths '/'
and relative paths

你应该将cdvfile://转换为file://

resolveLocalFileSystemURL('cdvfile://localhost/library-nosync/image.jpg', 
  function(entry) {
    var newname = entry.nativeURL;
  }
);

您应该将file://转换为localhost:8080。像这样:

var newname = window.Ionic.WebView.convertFileSrc('file:///var/containers/Bundle/Application/[APP_ID]/[APP_NAME]/www/files/project/home/iconA.svg');
© www.soinside.com 2019 - 2024. All rights reserved.