鸿蒙——H5和原生是怎么通信的?
首先通过原生端的webviewController进行创建通信端口,createMessagePorts, 该方法会创建两个端口,一个用作原生端,一个用作h5端。此时,h5端用接收的端口发送消息给原生端,原声端用自己剩余的端口进行onMessage接听消息,此时就可以实现双向通信。需要注意的点: 如果原生端的sdk方法是个异步方法,在h5端无法及时得到结果,此时需要再用原生反调h5进行传递结果。原
·
鸿蒙里H5混合开发?怎么实现?
- 环境搭建:首先需要完成 HarmonyOS 开发环境搭建,包括安装 DevEco Studio、设置开发环境以及配置设备调试等。
- 创建 Web 组件:在 ArkTS 代码中创建一个 Web 组件,用于加载 H5 页面。
- 实现桥接类:创建一个桥接类,用于在 ArkTS 侧和 H5 侧之间进行通信。桥接类中可以定义方法来处理 H5 侧的调用请求,并在 ArkTS 侧执行相应的操作。
- 注入 JavaScript 对象:通过 Web 组件的
javaScriptProxy属性,将桥接类的实例注册到 H5 侧的window对象上,以便 H5 侧可以调用桥接类的方法。 - 在 H5 侧进行调用:在 H5 页面中,可以通过 JavaScript 调用桥接类中注册的方法,向 ArkTS 侧发送请求,并接收返回的数据。
- 处理请求和响应:在桥接类中接收 H5 侧的请求,并根据请求的类型执行相应的操作。执行完毕后,通过
runJavaScript方法将结果返回给 H5 侧。
H5和原生是怎么通信的?
1.通过消息机制推送:
类似于前端的postMessage的跨域通信。首先通过原生端的webviewController进行创建通信端口,createMessagePorts, 该方法会创建两个端口,一个用作原生端,一个用作h5端。
然后通过webviewController将其中一个端口通过postMessage发送到h5端,h5端用onmessage来接收该端口,并全局缓存。
此时,h5端用接收的端口发送消息给原生端,原声端用自己剩余的端口进行onMessage接听消息,此时就可以实现双向通信
2.api调用的形式:
原生端可以通过javascriptProxy给h5页面注入可用的sdk应用方法集合,在h5完成初始化后,可
以直接调用原生的方法,这是h5调用原生。
原生端也可以直接调用h5端的方法 runjavascript,在这个方法里面传入方法调用传参数就可以。
需要注意的点: 如果原生端的sdk方法是个异步方法,在h5端无法及时得到结果,此时需要再用原生反调h5进行传递结果
更多推荐


所有评论(0)