js和原生通信的一般方法:
原始的js和native的通信,有三种模式
- sheme url
- 弹框事件监听
- 注入上下文
实际上比较好用的是注入上下文,
这个依赖于ios和android注入的引擎,
jsc和jsi官方给的方法
当然我们也可以使用三方工具,像jsbridge
我们先给ios和android安装包含jsBridge的工具
内部实际上使用的是WebViewJavascriptBridge这个包,
只不过对于注册和调用统一设置了api
一般我们的js文件是放在webview上的,
所以我们的js代码就能获取webview的window上的WebViewJavascriptBridge
js调用native,需要native注册,js调用,当然可以回调
native调用js,需要js注册,然后native调用
以上,是大致的思路
当然我们更近一步,还可以使用cordova或者capacitor
它们通过c++自己实现了一套通信机制,当然注册调用的整体过程没啥大的变化
或者rn和flutter这种一体化框架,内部封装的通信方法