UI Kit 与自定义界面
两种接入方式
| 方式 | 宿主负责 | SDK 负责 |
|---|---|---|
| 官方 UI Kit | 业务登录、获取课堂配置、展示和关闭页面、宿主权限 | 课堂布局、操作入口、事件订阅、状态展示、内部实例清理 |
| Headless 自绘 UI | 视图、事件订阅、视频/白板挂载、生命周期清理 | 课堂状态、权限策略、进退房与 Provider 编排 |
Web 官方页面使用 Vue 3,Android 使用 Compose,iOS 使用 SwiftUI/UIKit,Qt 使用 Qt Widgets。Electron 复用 Web UI。各平台安装和启动方式见客户端总览。
Web 控制器
@eduskit/ui/core 的 ClassroomController 可供非 Vue 视图使用。entry 使用 Web 课堂 Options,render 为宿主的视图更新函数:
import { ClassroomController } from '@eduskit/ui/core';
const controller = ClassroomController.create(entry);
const unsubscribe = controller.subscribe((snapshot) => {
render(snapshot);
});
await controller.initialize();
// On route unmount:
unsubscribe();
controller.destroy();
界面从 snapshot 读取课堂状态和成员权限,IM 消息去重由 SDK 处理。直接使用 Headless 时,按客户端 API订阅和读取状态。
主题和语言
Web Options 支持 themeMode: 'system' | 'light' | 'dark'、locale、messages,可通过控制器 setThemeMode、setLocale 更新。当前内置语言为 zh-CN 和 en-US。
Android 使用 EduThemeMode 与 localeTag;iOS 使用 EduThemeMode 与 localeTag。平台构造器和枚举写法见各平台指南,不把 Web 配置对象直接传给原生 SDK。
操作与状态
开麦、开摄命令成功返回只表示受理。界面以流状态回调为准显示设备是否打开。权限、上下台和课堂状态变化后重新读取交互策略。
getClassroomInteractionPolicy() 返回操作的 available 与 reason。权限未开放时展示明确的禁用说明;候场、已下课或能力未就绪等原因按当前状态解释。关闭已经开启的本地设备始终保留入口。