如果我在这个问题中遗漏了任何相关信息,请提前道歉:我不是网络开发人员,所以我不确定究竟需要哪些信息来解决我的问题 .
我有一个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的共享容器中提供图像(由 NSFileManager
的 containerURLForSecurityApplicationGroupIdentifier:
方法访问) .
但是,我提供的URL不起作用 . 当我在Safari调试器中查看页面时,我看到一些涉及加载文件的jQuery代码中引发异常 .
我已经调查了一些可能的解决方法,但没有一个解决了我的问题:
新的 loadFileURL:allowingReadAccessToURL:
方法似乎正是我需要的,然而,将 readAccessURL
参数设置到我的共享安全容器中的文件夹打破了网站 - 事实上,它甚至看起来不像HTML文件本身正确加载,因为没有他们在Safari调试器中有正确的名称 . 作为测试,我将URL设置为包含HTML页面的目录包中的URL,并得到了不同的错误 .
另一位开发人员建议我们将每个图像从bundle外部转换为base64编码的字符串,并通过Javascript将其传递到网站,但这对我来说似乎非常低效,所以我希望避免这种结果 .
最后,我在其他地方读过,将文件复制到应用程序的 tmp/www
目录中可以解决iOS 8上类似的问题 . 所以我想知道是否将所有内容复制到同一目录(在bundle之外,当然是只读的)可能会解决这个问题 . 然而,这似乎也非常低效 .
如何将包内和共享应用程序容器中的文件加载到我的Web视图中?