我的应用在UIWebView
内加载了一个非常大的网络应用。
我写了一个NSURLCache
分机" LocalCache
"。
此LocalCache
扩展程序拦截我的webapp加载,并从加密的本地应用程序包中提供所有请求的文件。此逻辑以NSURLCache's
cachedResponseForRequest
方法实现。因此该应用程序在本地100%提供:
class LocalCache:NSURLCache {
override func cachedResponseForRequest( request: NSURLRequest) -> NSCachedURLResponse? {
if (request points to my domain) {
get file from bundle
decrypt it
return local copy
} else {
return super.cachedResponseForRequest(request)
}
}
}
NSURLCache.setSharedURLCache(LocalCache());
我想将此功能移植到WKWebkit
。我想知道是否有一种方法可以实现类似的东西,因为遗憾的是,正如您可能知道的那样,WKWebView
不会将Cocoa堆栈与NSProtocol,NSUrl,NSUrlCache一起使用....使我当前的方法变得毫无用处。 / p>
那么,WkWebView
可以实现类似的东西吗?
注意:UiWebView
"认为"我的应用程序来自远程服务器是应用程序的关键:如果我只是在本地加载应用程序,即。 file://
,有许多内容无效,例如 YouTube 视频,因为youtube api抱怨" file://
&#34 ;不是经批准的原产地。因此,我正在寻找的WkWebView
解决方案必须与拦截缓存相关,而不是注入本地javascript。
答案 0 :(得分:1)
几个月前我处于一个非常相似的位置(使用NSURLProtocol / NSURLCache并希望从UIWebView迁移到WKWebView),我最终做的是使用本地HTTP服务器来提供我的文件/请求({ {3}})。
这也帮助我处理了一个不同的问题,这个问题与在UIWebView上加载HTML5视频有关,因为UIWebView / NSURLCache没有截获一些范围请求。