Tencent / VasSonic

VasSonic is a lightweight and high-performance Hybrid framework developed by tencent VAS team, which is intended to speed up the first screen of websites working on Android and iOS platform.
Other
11.8k stars 1.61k forks source link

关于WKWebView的实现思路 #284

Closed yangchao0033 closed 5 years ago

yangchao0033 commented 5 years ago

能否使用GCDWebServer做本地代理,替换NSURLProtocol实现请求的拦截和操作,进而支持WK这种不支持NSURLProtocol的请求。

sonic-ios-dev commented 5 years ago

这个可以考虑一下,还有另外一种稍微有成本的操作方法,就是使用LoadHTML方法来加载缓存,这样的坏处是首次加载的时候会浪费一次页面的全量请求,这个在我们项目中目前是这么接入的。

Mzxer commented 5 years ago

这个可以考虑一下,还有另外一种稍微有成本的操作方法,就是使用LoadHTML方法来加载缓存,这样的坏处是首次加载的时候会浪费一次页面的全量请求,这个在我们项目中目前是这么接入的。

请问下能讲讲 loadHtml 的大概的方案吗,目前查询到的 WKWebview 的资料,要不就是用私有api,要不就是 iOS 11 之后使用 WKURLSchemeHandler。谢谢。

karosLi commented 5 years ago

能否使用GCDWebServer做本地代理,替换NSURLProtocol实现请求的拦截和操作,进而支持WK这种不支持NSURLProtocol的请求。

GCDWebServer 不支持https的

karosLi commented 5 years ago

能否使用GCDWebServer做本地代理,替换NSURLProtocol实现请求的拦截和操作,进而支持WK这种不支持NSURLProtocol的请求。 使用LocalWebServer做本地代理,你有什么具体思路吗?难道是把本地服务器的地址放在请求头里,然后服务器端渲染,如果是来自app的请求,把所有src的host改成 app 本地服务的localhost。

karosLi commented 4 years ago

可以参考下这个库,在支持离线包的情况下,也可以让 WKWebView 能发送 ajax 请求

https://github.com/karosLi/KKJSBridge