核心思想
1、JS端和OC端各生成一個(gè)全局的bridge來(lái)處理函數(shù)調(diào)用和回調(diào)函數(shù)調(diào)用豌蟋。
2、JS端的匿名函數(shù)對(duì)應(yīng)OC端的block
3桑滩、OC端可以直接調(diào)用js
//WKWebView
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;
// UIWebView
- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
4夺饲、JS端通過(guò)OC端的代理可以間接實(shí)現(xiàn)對(duì)原生方法調(diào)用。
WebViewJavascriptBridge的優(yōu)缺點(diǎn)
1、兩邊各有一個(gè)bridge 往声,代碼邏輯清晰 管理方便
2擂找、形式上統(tǒng)一了 JS和OC互調(diào)
缺點(diǎn):
1、為了形式統(tǒng)一調(diào)用JS
需要在js端執(zhí)行setupWebViewJavascriptBridge(bridge)浩销。
舍棄了OC調(diào)用js的簡(jiǎn)單方法贯涎。在比較簡(jiǎn)單的應(yīng)用場(chǎng)景,建議直接調(diào)用js就好了慢洋,只有那種復(fù)雜的相互調(diào)用用 WebViewJavascriptBridge 最方便塘雳。
2、如何和android端協(xié)調(diào)為一套代碼普筹?
參考:
https://blog.csdn.net/dolacmeng/article/details/79623708
http://www.reibang.com/p/ca7eb797c8a0