【问题标题】:not allowed to load local resource ios9 cordova app不允许加载本地资源 ios9 cordova app
【发布时间】:2016-02-19 19:46:21
【问题描述】:

<!--CSP Meta Tags in index.html -->
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width,height=device-height,user-scalable=no">
        <meta http-equiv="Content-Security-Policy"
            content="default-src *;
            style-src 'self' 'unsafe-inline' 'unsafe-eval';
            script-src 'self' 'unsafe-inline' 'unsafe-eval';">
    <title>Test App</title>
</head>

<!-- config.xml file with whitelist plugin -->
<?xml version="1.0" encoding="utf-8" ?>
<widget xmlns   = "http://www.w3.org/ns/widgets"
    xmlns:gap   = "http://phonegap.com/ns/1.0"
    id          = "com.abc.testApp"
    versionCode = "10"
    version     = "2.0.0" >
  <name>TestApp</name>
  <description>
    Sample app to download and launch hybrid app
  </description>
  <author email="Test@gmail.com" href="http://1ct.es">
    Test
  </author>

  <preference name="orientation" value="portrait" />
  <preference name="fullscreen"  value="true" />
  <preference name="webviewbounce" value="false" />

  <icon src="icon.png" />

  <content src="index.html" />
  
  <gap:platform name="ios" />
  
  <gap:plugin name="cordova-plugin-whitelist" source="npm" />
  <gap:plugin name="org.apache.cordova.file" version="1.3.3" />
  <gap:plugin name="org.apache.cordova.file-transfer" version="0.5.0" />
  <gap:plugin name="org.apache.cordova.inappbrowser" version="0.5.2" />
  <gap:plugin name="org.chromium.zip" version="2.1.0" />
  
  <gap:config-file platform="ios" parent="NSAppTransportSecurity">
      <dict>
          <key>NSAllowsArbitraryLoads</key>
          <true/>
      </dict>
  </gap:config-file>
 
 <allow-navigation href="*" />
 <allow-intent href="*" />
 <access origin="*" />
 
 
</widget>

这是获取应用本地路径并在 iframe 中加载路径的部分代码 sn-p:

var appLocalUrl = cordova.file.dataDirectory + AppId + "/index.html";
iframe[0].contentWindow.location.replace(appLocalUrl);

应用下载到本地路径 但是当我们尝试在 iframe 中启动它时,会出现错误消息:

不允许加载本地资源:{file:///var/mobile/Containers/Data/Application/B8BF6DE2-228D-46B9-A84D-D2122D152385/Library/NoCloud/970/index.html}

对此有任何帮助吗?

【问题讨论】:

  • 谢谢,但我仍然面临同样的问题。请检查添加到问题中的 config.xml 和元标记。
  • 您没有标签表明您正在使用 Phonegap Build,并且您没有在帖子中提及您正在使用 Phonegap Build。您是否在使用 Adob​​e 的云服务 Phonegap Build

标签: jquery ios cordova


【解决方案1】:

所以我已经为此苦苦挣扎了很多。 最新的 iOS 使用 WKWebView。它似乎将本地文件视为来自远程服务器,即使它们位于应用程序本身中,并且此类请求被阻止。参考Source

以下解决方案对我有用:

  1. 添加 Corodova 文件插件。

    cordova plugin add cordova-plugin-file

  2. 把本地文件路径改成这样:

    cdvfile://localhost/bundle/www/you_folder_name/file_name.mp3

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2016-10-08
    • 2016-11-04
    • 2015-04-14
    • 1970-01-01
    • 2014-12-10
    相关资源
    最近更新 更多