一、WebViewView比UIWebView的优点
1.WK是iOS8以上推出,目前都是建议用WK
2.WK将UIWebViewDelegate和UIWebView封装成了14个类和3个协议
3.支持更多的H5特性
4.高达60FPS的滚动刷帧率和内置手势
5.性能、稳定性、功能都更好,加载网页占内存更少(比如模拟器加载百度占内存23M,只有UIWebView的1/4左右)
6.允许JS的Nitro加载并使用
二、UIWebView实现交互的方法和原理
UIWebView实现H5与iOS混编主要通过JavaScriptCore这个框架去实现的,具体这个框架的原理请移步之前写的2篇
JavaScriptCore详解https://blog.youkuaiyun.com/idealPC/article/details/115075029
交互即跳转、调用方法、传值https://blog.youkuaiyun.com/idealPC/article/details/108399793
三、WKWebView实现交互的方法和原理
WKScriptMessageHandler
1.H5调iOS
点击JS的登录按钮,JS将登录成功后的token数据传递给iOS,iOS将收到的数据展示出来
实现原理:
1、JS与iOS约定好方法jsToOcMethod,用作JS在调用iOS时的方法;
2、iOS使用WKUserContentController的-addScriptMessageHandler:name:方法监听name为jsToOcMethod的消息;
3、JS通过window.webkit.messageHandlers.jsToOcMethod.postMessage()的方式对jsToOcMethod方法发送消息;
4、iOS在-userContentController:didReceiveScriptMessage:方法中读取name为jsToOc的消息数据message.body。
WKScriptMessageHandler协议的代理方法:-userContentController:didReceiveScriptMessage: js通过messageHandlers调用方法、传递参数,在这个代理里都可以获取到
2.iOS调H5
这点是和UIWebView中类似
通过WKWebView的evaluateJavaScript: completionHandler:
参考文章地址:https://www.jianshu.com/p/56f0215cb15e
https://blog.youkuaiyun.com/sinat_31177681/article/details/90293727