karosLi / KKJSBridge

一站式解决 WKWebView 支持离线包,Ajax/Fetch 请求,表单请求和 Cookie 同步的问题 (基于 Ajax Hook,Fetch Hook 和 Cookie Hook)
MIT License
693 stars 120 forks source link

怎么兼容不使用KKWebView的情况 #56

Closed FoneG closed 3 years ago

FoneG commented 3 years ago

项目中接了三方广告商, 使用的是WKWebView,用browsingContextController的注册逻辑后导致他们正常的post请求丢失了body。

为了兼容直接使用WKWebView的情况, 把KKWebView逻辑拆成分类会不会更合理

karosLi commented 3 years ago

KKJSBridge的防止body丢失的能力,本身是跟 KKWebView 独立使用的。

第三放使用的 WKWebView,那他们自己的 SDK 里肯定也不会调用你的代码,就算集成了 KKJSBridge 也处理不了 body 丢失。 这个时候,你应该自己主动禁用离线包的能力,退出广告后再恢复。

FoneG commented 3 years ago

实际环境更复杂

有些三方服务打开WKWebView的事件并不是外部能直接监听的,这就没办法说做到【主动禁用离线包的能力,退出广告后再恢复】,一旦没拦截就会出现异常

并且三方服务的导入是无止境的,不能说离线包业务就这样持续地影响以后的开发

karosLi commented 3 years ago

那你如果想拦截三方,那就 HOOK WKWebView,在里面开启 ajax hook

FoneG commented 3 years ago

是的 还可以把WKNavigationDelegate、WKUIDelegate的逻辑也切出来,就不需要考虑跟其他bridge实现冲突的问题 为什么不考虑这么做呢

karosLi commented 3 years ago

是的。针对第三方确实可以利用分类来做。你有兴趣提个PR吗?

FoneG commented 3 years ago

当然 如果搞定的话 我会选择提个PR