首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子3- ImgCache.js未能加载资源:不支持iOS中的URL

离子3- ImgCache.js未能加载资源:不支持iOS中的URL
EN

Stack Overflow用户
提问于 2017-06-07 15:47:10
回答 1查看 806关注 0票数 4

我已经设法让imagecache.js在我的Ionic 3项目中工作,基于这个链接中的教程:https://medium.com/ninjadevs/caching-images-ionic-ccf2f4ca8d1f

当我运行ionic serve时,图像将正确地下载、缓存和加载,但是当我在我的iOS设备上安装应用程序时,这些映像无法加载,当我在我的Safari浏览器中检查它时,我看到以下错误:

代码语言:javascript
复制
Failed to load resource: unsupported URL

cdvfile://localhost/persistent/imgcache/a001f5f745d1d28d42b3395dd83d408a26aa9e6b.jpg

在我的config.xml文件中,我有以下条目,我认为这些条目可以解决问题,但没有:

代码语言:javascript
复制
<access origin="*" />
<access origin="cdvfile://*" />
<allow-navigation href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-navigation href="*" />

还有其他人遇到过类似的问题吗?

EN

回答 1

Stack Overflow用户

发布于 2019-11-15 13:48:48

下面是我为修复ImgCache.js在WKWebView下缓存的图像的加载所做的事情。

  1. 将这一行添加到config.xml中:
代码语言:javascript
复制
    <platform name="ios">
        <!-- Line here under iOS settings -->
        <preference name="iosPersistentFileLocation" value="Library" />
  1. 使用下一段代码来规范从ImgCache.js加载的URL:
代码语言:javascript
复制
    private normalizeUrl(url: string) {
        let result = url;

        const cdvfilePrefix = 'cdvfile://localhost/persistent/imgcache/';
        if (ionic.Platform.isIOS() && url.indexOf(cdvfilePrefix) === 0 ) {
            result = this.getIosImgCacheDirectoryUrl() + url.split(cdvfilePrefix)[1]
        }

        if (ionic.Platform.isIOS()) {
            result = result.replace(/^file:\/\//g, '');
        }

        return result;
    }

    private getIosImgCacheDirectoryUrl(): string {
        return cordova.file.dataDirectory.split('Library')[0] + 'Library/files/imgcache/';
    }
  1. 之后,在cachedUrl上使用它
代码语言:javascript
复制
      ImgCache.getCachedFileURL(src,
            (originalUrl, cacheUrl) => {
              const localUrl = this.normalizeUrl(cacheUrl);
              // now you can use it for <img src="{{localUrl}}>
            });

在iOS上得到的URL将类似于:

代码语言:javascript
复制
/var/mobile/Containers/Data/Application/<UUID>/Library/files/imgcache/<UNIQUE_FILE_ID>

注意,它必须以/ file://,开头,而不是以cdv file://,、file://,、http://localhost:8080/或其他任何东西开头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44417345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档