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