有个要提前说一下,WKWebview cookie 与Native 的 cookie 是分开的,在接入WKWebview 的时候发现无法同步cookie,试过很多方法,还是不行。
最后还是不甘心的换回了webView, 如果有解决这个问题的麻烦指教一下,给你红包,哈哈。
不管怎么样,多知道些东西总是好的。
WKWebview
Demo在这
先来个最直观的,为什么要用WKWebview
这里分别用WKWebview 和UIWebview加载了一个百度的网页,内存的占用情况如下
- WKWebview
- UIWebview
相比之下,WKWebView占用20M,而UIWebView占用73M,这性能提升的不只一点点。具体的要了解和使用 WKWebview 的,给个友情链接 刘彦玮的技术博客
WKWebViewJavascriptBridge
这里主要讲下 WKWebViewJavascriptBridge ,一个优秀的第三方框架
之前我也是自己封装WK做的交互,后面偶然间看到的这个开源库,8000+ star,果断上手。 安卓那边也有个类似这种的库, 2000+ star,调用方法基本类似, 这样 与前端的交互就可以只写一套代码了,轻松加愉快。
先做一个简单Demo熟悉下
先导入
pod ‘WebViewJavascriptBridge’, ‘~> 5.0
如果用UIwebview就导入WebViewJavascriptBridge。
WKWebViewJavascriptBridge 是后面加入的,用WKWebview要导入这个头文件
这里用一个单例类用来管理交互 函数,像Cordova那种写插件的形式,写在一个类供JS调用,具体的可以看Demo。
html 的代码段落
贴一下 demo.html 的 JS 段落 ,看注释,主要知道JS 怎么调用 原生方法 和 注册JS方法 供JS调用
原生代码
|
|
|
|
写在JS里的代码这里是不能动的,原样贴上去就行。 之前有一次莫名其妙老是调用不了OC的方法, 后来发现是
window.WebViewJavascriptBridg 写成了 window.WebView JavascriptBridg, 一直没看到,在网页端一直报找不到 WebViewJavascriptBridg这个变量,看到报错应该能发现在定义的时候有出错