rup*_*pps 6 nsurlcache swift ios8 wkwebview
我的应用程序加载了一个非常大的webapp 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());
Run Code Online (Sandbox Code Playgroud)
我想将此功能移植到WKWebkit.我想知道是否有办法实现类似的东西,因为不幸的是,你可能知道,WKWebView不使用NSProtocol,NSUrl,NSUrlCache的Cocoa堆栈....使我当前的方法无用.
那么,可以用类似的东西完成WkWebView吗?
注意:UiWebView"认为"我的应用程序来自远程服务器的事实是应用程序的关键:如果我只是在本地加载应用程序,即.file://,有很多东西不起作用,例如,YouTube视频,因为youtube api抱怨" file://"不是批准的来源.所以WkWebView我正在寻找的解决方案必须与拦截缓存相关,而不是注入本地javascript.
几个月前我处于非常相似的位置(使用 NSURLProtocol / NSURLCache 并希望从 UIWebView 迁移到 WKWebView),我最终做的是使用本地 HTTP 服务器来服务我的文件/请求(https:// github.com/mattstevens/RoutingHTTPServer)。
这也帮助我处理了另一个问题,该问题与在 UIWebView 上加载 HTML5 视频有关,因为某些范围请求没有被 UIWebView / NSURLCache 拦截。
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |