核心思想
1、JS端和OC端各生成一个全局的bridge来处理函数调用和回调函数调用。
2、JS端的匿名函数对应OC端的block
3、OC端可以直接调用js
//WKWebView
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler;
// UIWebView
- (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
4、JS端通过OC端的代理可以间接实现对原生方法调用。
WebViewJavascriptBridge的优缺点
1、两边各有一个bridge ,代码逻辑清晰 管理方便
2、形式上统一了 JS和OC互调
缺点:
1、为了形式统一调用JS
需要在js端执行setupWebViewJavascriptBridge(bridge)。
舍弃了OC调用js的简单方法。在比较简单的应用场景,建议直接调用js就好了,只有那种复杂的相互调用用 WebViewJavascriptBridge 最方便。
2、如何和android端协调为一套代码?
参考:
https://blog.csdn.net/dolacmeng/article/details/79623708
https://www.jianshu.com/p/ca7eb797c8a0