跳到主要内容

HarmonyOS 集成

包和环境​

Headless HAR 为 @edukits/edusdk,UI Kit HAR 为 @edukits/edusdk-ui。包名中的 edukits 与 Web 的 eduskit 不同。

示例 examples/hms 使用 DevEco Studio、HarmonyOS SDK 6.1.1 / API 24、OHPM 与 Hvigor,依赖本地构建的 0.1.1 HAR。

构建和依赖​

在 edu-sdks 根目录运行 make harmony-napi,生成 arm64 N-API 模块。用 DevEco 打开 examples/hms,安装其本地 HAR 依赖并构建 HAP。UI Kit 依赖 Headless,宿主不在主线程直接加载 Rust 或 N-API。

Headless 入口​

宿主通过 hostEffectHandler 提供后台 HTTP、IM、RTC 和白板能力:

import { EduSdk, EduSdkCreateOptions, EnterClassroomParams } from '@edukits/edusdk';

// hostEffectHandler is implemented by the host's HTTP and provider adapters.
const sdk = EduSdk.create(
new EduSdkCreateOptions(appId, backendUrl, accessToken, hostEffectHandler),
);
sdk.onClassInfoChanged((info) => {
/* render info */
});
await sdk.initialize();
sdk.enterClassroom(new EnterClassroomParams(classroomId, eduUserId, displayName));
// On exit:
sdk.leaveClassroom();
await sdk.destroy();

HostEffectHandler 接收 effectsJson,执行相应操作后通过 complete(resultJson) 将结果返回原 Core。

initialize() 和 destroy() 都需要等待。销毁完成后的实例不能复用,重试需等原 Worker 销毁后再创建实例。

接入限制​

HAP 示例提供竖屏启动界面,尚未绑定完整的供应商 Provider;缺少绑定时会报告能力未注册。发布前需完成目标设备上的 N-API Worker、教学工具、声音和音视频联调。

getMemberActionPolicy(userId) 返回异步准备的操作结果。宿主需在结果就绪后更新界面,并为所用功能配置系统权限、网络访问和生命周期处理。