ios - WebKit webview (WKwebview) 无法加载应用程序目录之外的资源

标签 ios cordova wkwebview

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

1 - 首先,我们的应用程序已构建并发布,包括其路径开头的 Assets (图标、图像等): file:///var/containers/Bundle/Application/[APP_ID]/[APP_NAME]/www/files/project/home/iconA.svg

这些资源已正确显示。

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

...但是这些资源没有显示。

NB1:在这两种情况下,资源都是在背景图像 CSS 属性中声明的

NB2:我们多年来一直在使用这个流程,并在以前的 UIwebview 上取得了成功。

-

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

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

那么,第一个结论是WKwebview无法访问应用程序目录之外的资源? 大家有什么信息、经验可以分享吗?有人知道解决方法吗?

任何帮助将不胜感激。

来自法国的干杯!

最佳答案

花了一些时间,但最终解决了这个问题。很简单,但你需要知道如何......首先确保你使用的是最新版本的 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');

关于ios - WebKit webview (WKwebview) 无法加载应用程序目录之外的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52373061/

相关文章:

ios - 动画约束快速适合所有屏幕

android - Phonegap 互联网连接状态

javascript - Ionic 框架 -/audio 目录被跳过并且不存在于构建中

android - Phonegap 使用 cordova-plugin-sim 获取 sim 信息

ios - WKWebView 与 SFSafariViewController

ios - 应用程序购买中的 xamarin 内存泄漏

ios - 使用 SwiftUI 的 TextField 描边边框文本

ios - WKWebview, imagePicker 在选择图片时不显示完成按钮

ios - 回合制配对在 iOS 10 中不起作用

html - 如何在 WKWebView 中提取网页内容的第一段