鸿蒙里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进行传递结果

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐