KKJSBridge-一站式解决WKWebView相关问题
项目简介
KKJSBridge是一个在GitHub上开源的项目,它主要用于一站式解决WKWebView支持离线包,Ajax/Fetch请求,表单请求和Cookie同步的问题,其实现基于AjaxHook,FetchHook和CookieHook等技术。这个项目在功能上十分丰富,例如支持模块化的管理JSAPI,模块间可以共享上下文信息、消息转发以及支持JSBridge同步调用,并且兼容WebViewJavascriptBridge请求等。
核心技术
项目基于AjaxHook,FetchHook和CookieHook技术构建。例如在AjaxHook中,提供了两种方案,分别是AjaxHook部分API+NSURLProtocol(对应KKJSBridge/AjaxProtocolHook)和AjaxHook全部API(对应KKJSBridge/AjaxHook)。前者通过hook ajax中的open/send方法,借助JSBridge缓存body数据,再由NSURLProtocol拦截请求重新拼接并返回结果;后者则是使用hook的XMLHttpRequest对象代理真实请求,hook所有相关方法,通过Native侧创建NSMutableRequest对象并处理请求结果通知JS侧。此外,项目还涉及如NSNotificationCenter用于监听通知、NSURLSessionDataTask处理网络请求数据等技术。
项目总结
KKJSBridge项目为WKWebView相关的多种需求提供了全面的解决方案,其功能的多样性和技术的深度都值得深入研究。如果你对这个项目有任何想法或者建议,欢迎在下方留言一起参与讨论。