将文件从本地文件系统加载到从file:// URL提供的WKWebView网站

时间:2015-10-07 22:23:36

标签: ios wkwebview

如果我在此问题中遗漏了任何相关信息,请提前道歉:我不是网络开发人员,所以我不确定解决问题的确切信息。

我有一个WKWebView加载一个本地服务的网站,使用的代码大致相似(省略了一些涉及管理器的细节,我认为这与此问题无关)。

  WKWebViewConfiguration *webViewConfiguration = [[WKWebViewConfiguration alloc] init];
  WebViewManager *manager = [[WebViewManager alloc] init];
  webViewConfiguration.userContentController = manager;
  WKWebView *aWebView = [[WKWebView alloc] initWithFrame:self.view.bounds
                                           configuration:webViewConfiguration];
  [aWebView loadRequest:[NSURLRequest requestWithURL:aUrl]];
  [aWebView setNavigationDelegate:manager];

此网站的HTML文件存储在App的捆绑包中(file:// URL),并且需要能够访问存储在其中的各种图像,CSS文件,JS文件和其他资源捆绑中的目录(为此,HTML中有相对的URL,我相信)。

我现在需要能够从App的共享容器中提供图像(由containerURLForSecurityApplicationGroupIdentifier:的{​​{1}}方法访问)。

但是,我提供的网址不起作用。当我在Safari调试器中查看页面时,我看到一些涉及加载文件的jQuery代码中引发异常。

我已经调查了一些可能的解决方法,但没有一个解决了我的问题:

新的NSFileManager方法似乎正是我所需要的,但是,将loadFileURL:allowingReadAccessToURL:参数设置为共享安全容器中的文件夹会破坏网站 - 事实上,它甚至看起来都没有就像HTML文件本身正确加载一样,因为它们都没有在Safari调试器中使用正确的名称。作为测试,我将URL设置为包含HTML页面的目录包中的URL,并且出现不同的错误。

另一位开发人员建议我们将每个图像从包外转换为base64编码的字符串,然后通过Javascript将其传递到网站,但这对我来说效率非常低,所以我希望避免这种结果。

最后,我在其他地方读过,将文件复制到应用程序的readAccessURL目录中可以解决iOS 8上类似的问题。所以我想知道是否将所有内容复制到同一个目录(在bundle之外,当然是只读的)可能会解决这个问题。然而,这似乎也非常低效。

如何从包内和共享应用程序容器中将文件加载到我的Web视图中?

0 个答案:

没有答案