Mob*_*pot 5 ios cordova wkwebview
由于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 的网络检查器的网络面板中,资源显示为红色,并带有一条红色消息,表明在尝试加载它时发生了错误。没有错误代码,没有任何技术帮助,没有比这条消息更详细的信息......
我运行了一些测试,似乎资源存在于给定路径的文件系统上。(使用cordova-plugin-file我可以输出svg内容)。
那么,第一个结论是 WKwebview 无法访问 app 目录之外的资源?作为任何人的任何信息,经验分享?有谁知道解决方法?
任何帮助将不胜感激。
来自法国的欢呼!
花了一些时间,但最终解决了这个问题。很简单,但你需要知道如何......首先确保你使用的是最新版本的 webview。就我而言,这是 2.2.0
ionic cordova plugin rm cordova-plugin-ionic-webview
ionic cordova plugin add cordova-plugin-ionic-webview@latest
Run Code Online (Sandbox Code Playgroud)
现在检查您的代码并确保正确引用 www 之外的所有图像。不会工作:
cdvfile://
file://
Run Code Online (Sandbox Code Playgroud)
将工作:
http://localhost:8080/
http://localhost:8080/_file_/
absolute paths '/'
and relative paths
Run Code Online (Sandbox Code Playgroud)
您应该将 cdvfile:// 转换为 file://
resolveLocalFileSystemURL('cdvfile://localhost/library-nosync/image.jpg',
function(entry) {
var newname = entry.nativeURL;
}
);
Run Code Online (Sandbox Code Playgroud)
您应该将 file:// 转换为 localhost:8080。像这样:
var newname = window.Ionic.WebView.convertFileSrc('file:///var/containers/Bundle/Application/[APP_ID]/[APP_NAME]/www/files/project/home/iconA.svg');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2373 次 |
| 最近记录: |