问题描述:用了三方SDK,里面加载了本地HTML,加载时打印信息里提示 Ignoring request to load this main resource because it is outside the sandbox。
经询问SDK里用的是 WKWebView 调用的下面的方法加载的
- (nullableWKNavigation*)loadFileURL:(NSURL*)URL allowingReadAccessToURL:(NSURL*)readAccessURL
用runtime交换方法后打印上个方法的URL 和 readAccessURL,发现了问题所在
URL =
file:///private/var/containers/Bundle/Application/9127DFAB-A9F5-4758-8F56-6E40EA05FA59/
%25E5%25AE%2589%25E5%25A5%25BD%25E5%258C%25BB%25E7%2594%259F.app
/SDK.bundle/Client/active.html
readAccessURL =
file:///private/var/containers/Bundle/Application/9127DFAB-A9F5-4758-8F56-6E40EA05FA59/
%E5%AE%89%E5%A5%BD%E5%8C%BB%E7%94%9F.app
/SDK.bundle/Client/
URL 和 readAccessURL 两个参数前面应该是一样的,现在APP名那里不一致。
这个现象是因为项目名字是中文,URL 中的名字被多转码一次。
解决方案:1.工程改为英文名 2.把URL 中的active.html 拼接到 readAccessURL 后面,当做URL传入 loadFileURL