更新时间:2025-07-03 GMT+08:00
分享

快速入门

本小节以实现初始化SDK为例,介绍如何使用HarmonyOS SDK进行二次集成开发。

开发环境准备

在开发的过程中请满足如下环境要求。

表1 环境要求

环境和工具名称

版本要求

说明

操作系统

HarmonyOS 5.0.1 Release(Build Version: 5.0.0.123)及以上

详见HarmonyOS官网版本说明。

HarmonyOS SDK

HarmonyOS 5.0.1 Release SDK(API 13 Release)及以上

-

DevEco Studio

DevEco Studio 5.0.1(Build Version: 5.0.5.315)及以上

-

测试资源及App ID申请

-

请参见“开发前准备”。

云会议SDK在Harmony OS系统上,仅支持按系统Navigation路由方式集成。鸿蒙系统官方已不推荐使用Router路由方式 。

SDK快速集成

HarmonyOS SDK支持单ability集成多ability集成两种方式,本章节主要说明这两种方式的集成步骤。

移动端推荐单ability集成方式,PC端推荐多ability集成方式。

单ability集成

  1. 将下载的软件包全部解压得到HWMUISDK.har(集成使用)。

    图1 解压出来的文件

    图2 SDK资源

  2. 打开“DevEco Studio”软件。
  3. 单击File->New->Create Project,选择Empty Ability->Next,填写应用信息,选择“Finish”完成新工程创建,具体步骤可参考下图。

    图3 选择创建新工程
    图4 选择新工程模板为Empty Ability
    图5 填写应用信息,点击Finish完成工程创建

  4. 步骤1中解压得到的HWMUISDK.har添加到项目中,同时在oh-package.json5中添加依赖。

    注:

    1) 添加依赖的路径必须和HWMUISDK.har实际路径保持一致,确保IDE能成功加载HWMUISDK.har。

    2) package name如下:

    1
    @hwcloudmeeting/uisdk
    
    图6 添加HWMUISDK.har到项目工程,并配置依赖

  5. 在EntryAbility.ets文件的生命周期方法中,调用UISDK相关接口。

    图7 Ability生命周期方法中调用UISDK相关接口

  6. 在module.json5中给应用Ability需配置后台模式。

    图8 module.json5中配置应用Ability后台模式

  7. 应用权限配置。HarmonyOS SDK会中部分能力(主要涉及网络、麦克风、摄像头、共享采集等)需要应用在module.json5文件中申请相关权限才能正常使用。

    "requestPermissions": [
      {
        "name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
      },
      {
        "name": "ohos.permission.INTERNET"
      },
      {
        "name": "ohos.permission.GET_NETWORK_INFO"
      },
      {
        "name": "ohos.permission.GET_WIFI_INFO"
      },
      {
        "name": "ohos.permission.MICROPHONE",
        "reason": "$string:microphone",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.CAMERA",
        "reason": '$string:camera',
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.PREPARE_APP_TERMINATE",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      }
    ]

    注:ohos.permission.MICROPHONE和ohos.permission.CAMERA权限申请,需要在资源文件(文件路径:resources\base\element\string.json、resources\en_US\element\string.json、resources\zh_CN\element\string.json)定义下相关的reason描述:

    {
      "name": "microphone",
      "value": "麦克风"
    },
    {
      "name": "camera",
      "value": "摄像头"
    }
    {
      "name": "microphone",
      "value": "microphone"
    },
    {
      "name": "camera",
      "value": "camera"
    }

  8. 关键接口调用说明。

    • 初始化
      1
      2
      3
      4
      5
      6
      UISDK.getConfigApi().init({
            appId: SdkConfigManager.sharedCacheManager().getAppId(),
            meetingAbilityName: 'EntryAbility',
            launchMode: HWMLaunchMode.SINGLE_ABILITY,
            navigationId: "UISDKDemoNavigationId",
          }, SdkConfigHandler.sharedCacheManager().context);
      

      注:launchMode需要传HWMLaunchMode.SINGLE_ABILITY,navigationId是navigation页面的id属性,如下所示:

      图9 navigationId设置

    • 打开会议页面接口
      1
      2
      3
      UISDK.getConfigApi().openMeetingPage(() => {
        pathInfos.pushPathByName("HWMMeetingPage", null, false);
      });
      

      注:

      1. 此接口必须实现,如不实现,会出现入会后没有会中页面问题。

      2. 此接口在初始化后,入会前调用,在拿到应用navigation路由栈pathInfos后设置一次就可以。

    • 配置Ability的windowStage接口
      1
      2
      const windowStage: window.WindowStage | undefined = AppStorage.get('windowStage');
      UISDK.getAbilityApi().abilityRegisterWindowStage(windowStage);
      

      注:

      1. 此接口必须调用,如不调用,入会后会中页面会出现布局异常问题。

      2. 此接口在初始化后调用,windowStage可以在ability生命周期函数onWindowStageCreate通知时存储,便于后续使用,如下所示:

      1
      2
      3
      4
      onWindowStageCreate(windowStage: window.WindowStage): void {
          windowStage.loadContent('pages/Index', () => {});
          AppStorage.setOrCreate("windowStage", windowStage);
       }
      
    • 单ability集成下,窗口属性复用说明

      由于只有一个ability,会中和会前共用窗口属性,会中的窗口属性设置会影响会前界面显示,HarmonyOS SDK内部对绝大部分场景,进行了复原操作,不需要集成方额外处理;但少数受系统限制的窗口属性,需要集成方处理下,保证会前的页面显示正常;

      1. 窗口顶部导航栏是否显示

      系统接口:

      1
      setWindowSystemBarEnable
      

      复原方式:集成方可以监听navigation路由栈变化,当栈顶不是会中页面时,调用上述系统接口,按需设置systemBar状态;(参考Demo)

  9. 其他接口调用示例。

    • 登录接口
      1
      UISDK.getLoginApi().loginByAppId(info).then((res: HWMLoginResult) => {});
      
    • 创会接口
      1
      UISDK.getConfCtrlApi().creatConf(createConfParam).then((res: HWMCreateConfResult) => {});
      
    • 入会接口
      1
      UISDK.getConfCtrlApi().joinConf(model).then((res: HWMJoinConfByIdResult) => {});
      
    • 退出登录接口
      1
      UISDK.getLoginApi().logout().then((res) => {});
      

    完成上述调用步骤,就可以运行 新建的demo工程。

多ability集成

  1. 将下载的软件包全部解压得到HWMUISDK.har(集成使用)。

    图10 解压出来的文件

  2. 打开“DevEco Studio”软件。
  3. 单击File->New->Create Project,选择Empty Ability->Next,填写应用信息,选择“Finish”完成新工程创建,具体步骤可参考下图。

    图11 选择创建新工程
    图12 选择新工程模板为Empty Ability
    图13 填写应用信息,点击Finish完成工程创建

  4. 步骤1中解压得到的HWMUISDK.har添加到项目中,同时在oh-package.json5中添加依赖。

    注:添加依赖的路径必须和HWMUISDK.har实际路径保持一致,确保IDE能成功加载HWMUISDK.har。

    图14 添加HWMUISDK.har到项目工程,并配置依赖

  5. 创建会议Ability(如示例的InMeetingAbility.ets)。

    图15 创建InMeetingAbility

  6. 在InMeetingAbility中添加abilityLoadInMeetingPage。

    图16 调用abilityLoadInMeetingPage

  7. 在会议Ability文件的生命周期方法中,调用UISDK相关接口。

    图17 会议Ability生命周期方法中调用UISDK相关接口

  8. 在module.json5中给会议Ability需配置后台模式。

    图18 module.json5中配置会议Ability后台模式

  9. 应用权限配置。HarmonyOS SDK会中部分能力(主要涉及网络、麦克风、摄像头、共享采集等)需要应用申请相关权限才能正常使用。

    "requestPermissions": [
      {
        "name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
      },
      {
        "name": "ohos.permission.INTERNET"
      },
      {
        "name": "ohos.permission.GET_NETWORK_INFO"
      },
      {
        "name": "ohos.permission.GET_WIFI_INFO"
      },
      {
        "name": "ohos.permission.MICROPHONE",
        "reason": "$string:microphone",
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.CAMERA",
        "reason": '$string:camera',
        "usedScene": {
          "abilities": [
            "EntryAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.PREPARE_APP_TERMINATE",
        "usedScene": {
          "abilities": [
            "InMeetingAbility"
          ],
          "when": "inuse"
        }
      },
      {
        "name": "ohos.permission.SYSTEM_FLOAT_WINDOW",
        "usedScene": {
          "abilities": [
            "InMeetingAbility"
          ],
          "when": "always"
        }
      }
    ]

  10. 接口调用示例。

    • 初始化
      1
      UISDK.getConfigApi().init(initConfig, this.getContext());
      
    • 登录接口
      1
      UISDK.getLoginApi().loginByAppId(info).then((res: HWMLoginResult) => {});
      
    • 创会接口
      1
      UISDK.getConfCtrlApi().creatConf(createConfParam).then((res: HWMCreateConfResult) => {});
      
    • 入会接口
      1
      UISDK.getConfCtrlApi().joinConf(model).then((res: HWMJoinConfByIdResult) => {});
      
    • 退出登录接口
      1
      UISDK.getLoginApi().logout().then((res) => {});
      

    完成上述调用步骤,就可以运行 新建的demo工程。

相关文档