ToB企服应用市场:ToB评测及商务社交产业平台

标题: Harmony Next 跨平台开发入门 [打印本页]

作者: 缠丝猫    时间: 2025-1-23 11:03
标题: Harmony Next 跨平台开发入门
ArkUI-X 官方先容

官方文档:https://gitee.com/arkui-x/docs/tree/master/zh-cn
ArkUI跨平台框架(ArkUI-X)进一步将ArkUI开发框架扩展到了多个OS平台:目前支持OpenHarmony、Android、 iOS,后续会渐渐增长更多平台支持。开发者基于一套主代码,就可以构建支持多平台的精致、高性能应用。
创建工程

https://gitee.com/arkui-x/docs/blob/master/zh-cn/application-dev/quick-start/start-with-deveco-studio.md
在主菜单栏,单击Build > Build Hap(s)/APP(s) > Build APP(s)

编译后的ArkTS代码、资源和平台胶水代码已天生到 Android 和 iOS 应用工程中,存放在 .arkui-x 目录下,后续安装、运行和调试请使用 Android Studio 和 Xcode,也可使用ACE Tools。
平台桥接

若 ArkUI-X 未支持必要的功能实现,则必要使用平台桥接让原生平台各自实现相应的功能。
1、在ArkUI侧创建平台桥接。指定名称,该名称应与Android侧平台桥接的名称一致。
  1. // 导入平台桥接模块
  2. import bridge from '@arkui-x.bridge';
  3. // 创建平台桥接实例
  4. const bridgeImpl = bridge.createBridge('Bridge');
复制代码
2、在Android侧创建BridgePlugin类。指定名称,该名称应与ArkUI侧平台桥接的名称一致。通过创建的该对象即可调用平台桥接的方法。
  1. Bridge bridge = new Bridge(this, "Bridge", getBridgeManager());
复制代码
ArkUI 调用 Android 方法

1、在ArkUI侧调用Android侧的方法。
  1. const PLAT_ANDROID = 'Android'
  2. const PLAT_IOS = 'iOS'
  3. const PLAT_HARMONY = 'OpenHarmony'
  4. const osFullNameInfo: string = deviceInfo.osFullName
  5. function isAndroid() {
  6.   return osFullNameInfo.startsWith(PLAT_ANDROID)
  7. }
  8. function isIOS() {
  9.   return osFullNameInfo.startsWith(PLAT_IOS)
  10. }
  11. function isHarmony() {
  12.   return osFullNameInfo.startsWith(PLAT_HARMONY)
  13. }
  14. const BRIDGE = 'Bridge'
  15. export class PlatformHelper {
  16.   static INSTANCE: PlatformHelper = new PlatformHelper();
  17.   private bridgeImpl: bridge.BridgeObject|undefined = undefined;
  18.   vibrate(duration: number) {
  19.     this.crossPlatformMethod('vibrate', `${duration}`, () => {
  20.       nativeVibrate(duration)
  21.     })
  22.   }
  23.   crossPlatformMethod(methodName: string, param: string, onHarmony: ()=>void) {
  24.     if (isHarmony()) {
  25.       onHarmony()
  26.     } else {
  27.       if (this.bridgeImpl == undefined) {
  28.         this.bridgeImpl = bridge.createBridge(BRIDGE);
  29.       }
  30.       if (this.bridgeImpl != undefined) {
  31.         this.bridgeImpl.callMethod(methodName, param).then((res) => {
  32.           let nativeResponse = '调用原生侧函数调用成功, 返回数据为 ' + res;
  33.           console.log(nativeResponse);
  34.         }).catch((err: Error) => {
  35.           let nativeResponse = '调用原生侧函数调用失败: ' + err;
  36.           console.log(nativeResponse);
  37.         });
  38.       }
  39.     }
  40.   }
  41. }
复制代码
2、在Android侧实现被调用的方法
  1.     public void vibrate(String param) {
  2.         ALog.i(TAG, "Android Bridge vibrate param is " + param);
  3.         Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
  4.         if (TextUtils.isDigitsOnly(param)) {
  5.             vibrator.vibrate(Integer.parseInt(param));
  6.         } else {
  7.             vibrator.vibrate(60);
  8.         }
  9.     }
复制代码
上面的代码就实现了在 ArkUI 侧调用 Android 侧的 vibrate 方法,能够成功实现振动。
ArkUI 调用 鸿蒙 方法

本以为鸿蒙的实现只必要写一个方法,直接调用就可以效果编译时报错

官网文档:https://gitee.com/arkui-x/docs/blob/master/zh-cn/application-dev/quick-start/platform-different-introduction.md#%E9%9D%9E%E8%B7%A8%E5%B9%B3%E5%8F%B0api%E5%A4%84%E7%90%86
必要新建后缀为 .ts的文件,并在不支持跨平台的接口上方增长解释 // @ts-ignore 或 // @ts-nocheck 屏蔽告诫,并包管这个方法只会在 OpenHarmony应用平台 调用。
   本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4