【Hybrid】h5和原生通信的一般方法大纲

420 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、注入上下文

原始的js和native的通信,有三种模式

  • sheme url
  • 弹框事件监听
  • 注入上下文

实际上比较好用的是注入上下文, 这个依赖于ios和android注入的引擎, jsc和jsi官方给的方法
笔者实现:jsc-jsi-example

二、jsBridge

当然我们也可以使用三方工具,像jsbridge

我们先给ios和android安装包含jsBridge的工具 内部实际上使用的是WebViewJavascriptBridge这个包, 只不过对于注册和调用统一设置了api

一般我们的js文件是放在webview上的, 所以我们的js代码就能获取webview的window上的WebViewJavascriptBridge

js调用native,需要native注册,js调用,当然可以回调

native调用js,需要js注册,然后native调用

以上,是大致的思路

实现:JsBridge

三、ionic

当然我们更近一步,还可以使用cordova或者capacitor
它们通过c++自己实现了一套通信机制,
当然注册调用的整体过程没啥大的变化
实现:qc-ionic-base

PS:RN和Flutter

继续延伸前进,
我们会看到目前市面上大行其道的,
基于转译的RN和自己渲染的Flutter
这些构成了跨端领域丰富多彩的世界
关于RN和Flutter网上的讲解和示例有很多,这里就不多做赘述
主要是这里边变化的思想很有意思