鸿蒙Next JSBridge开发指南

在鸿蒙Next中如何使用JSBridge实现JavaScript与原生代码的交互?能否提供具体的API调用示例和注意事项?

2 回复

鸿蒙Next的JSBridge开发?简单说就是让JS和原生代码“勾肩搭背”聊天!记住三步:注册接口、处理回调、别让数据迷路。官方文档写得挺明白,但调试时记得带杯咖啡——毕竟bug和需求总爱半夜敲门!

更多关于鸿蒙Next JSBridge开发指南的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


以下是鸿蒙Next JSBridge开发的关键步骤和代码示例,帮助您实现JavaScript与HarmonyOS应用间的通信:


1. 环境准备

  • 安装DevEco Studio 4.0+,配置HarmonyOS SDK。
  • 创建HarmonyOS工程(API 9+)。

2. 前端JavaScript调用Native方法

在HTML中通过window.hmosbridge调用Native方法:

<button onclick="callNativeMethod()">调用Native方法</button>
<script>
  function callNativeMethod() {
    // 传递JSON数据给Native侧
    window.hmosbridge.callNative({
      method: 'showToast',
      data: { message: 'Hello from JS!' }
    });
  }

  // 注册供Native调用的JS方法
  window.hmosbridge.registerHandler('jsMethod', (data) => {
    alert('Native调用JS: ' + data);
  });
</script>

3. Native侧实现JSB桥接

EntryAbility中初始化Web组件并注入桥接对象:

// EntryAbility.java
public class EntryAbility extends Ability {
  @Override
  public void onStart(Intent intent) {
    super.onStart(intent);
    // 配置Web组件
    WebConfig webConfig = new WebConfig.Builder()
        .setWebViewCreateCallback((webView) -> {
          // 注入JSBridge对象
          webView.addJsObject("hmosbridge", new JSBridge());
        })
        .build();
    super.setWebConfig(webConfig);
  }
}

创建JSBridge类处理通信:

// JSBridge.java
public class JSBridge {
  // 处理JS调用Native
  @JavascriptInterface
  public void callNative(String jsonStr) {
    try {
      JSONObject json = new JSONObject(jsonStr);
      String method = json.getString("method");
      if ("showToast".equals(method)) {
        String message = json.getJSONObject("data").getString("message");
        // 执行Native逻辑(如显示Toast)
        new Toast(getContext())
            .setText(message)
            .show();
      }
    } catch (JSONException e) {
      e.printStackTrace();
    }
  }

  // Native调用JS方法
  public void callJS(WebView webView, String methodName, String data) {
    webView.executeJs(`window.hmosbridge.${methodName}('${data}')`);
  }
}

4. 关键配置

  • 权限:在module.json5中添加网络权限:
    "requestPermissions": [
      { "name": "ohos.permission.INTERNET" }
    ]
    
  • Web组件安全:限制可信域名(如"https://example.com")。

5. 调试技巧

  • 使用DevEco Studio的Web Inspector调试前端代码。
  • 通过HiLog输出Native日志:
    HiLog.info(LABEL, "JS调用Native: %{public}s", jsonStr);
    

注意事项

  • 数据序列化:使用JSON统一数据格式。
  • 异步处理:耗时操作需在子线程执行,通过回调返回结果。
  • 版本兼容:确保JSB接口与HarmonyOS API版本匹配。

通过以上步骤,可快速实现双向通信。参考官方文档获取完整示例。

回到顶部