swift – WKWebView和NSURLCache提供本地内容

swift – WKWebView和NSURLCache提供本地内容,第1张

概述我的应用程序在UIWebView中加载了一个非常大的webapp. 我写了一个NSURLCache扩展“LocalCache”. 此LocalCache扩展拦截我的webapp加载,并从加密的本地应用程序包中提供所有请求的文件.此逻辑在NSURLCache的cachedResponseForRequest方法中实现.因此该应用程序在本地100%提供: class LocalCache:NSURLC 我的应用程序在UIWebVIEw中加载了一个非常大的webapp.

我写了一个NSURLCache扩展“LocalCache”.

此LocalCache扩展拦截我的webapp加载,并从加密的本地应用程序包中提供所有请求的文件.此逻辑在NSURLCache的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不使用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拦截.

总结

以上是内存溢出为你收集整理的swift – WKWebView和NSURLCache提供本地内容全部内容,希望文章能够帮你解决swift – WKWebView和NSURLCache提供本地内容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1015692.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存