跳转到主要内容

[1.4.0] - 2026.10.15

新增

  • adminListOnlineMemberOf(meetingId, page?, perPage?):指定会议的在线成员,对齐 Swift 版 adminListOnlineMember(meetingId:page:perPage:)。主持人在分组讨论的小组里时,用它拉主会场的在线成员。
  • SMeetingDelegate.onRoomTitleChange:会议改名(含小组会议),数据为 title / previousTitle。来自频道属性比对,同时兼容 Objective-C 版发出的 admin_update_title 广播,两路到达时只报一次。
  • getLocalAudioLevel():本端麦克风采集电平(0~1),用来画「我」的音量条(onActiveSpeakers 只含远端)。未开麦时为 undefined,轮询别超过 10Hz。
  • MeetingInfo 新增 entryMutePolicy?(入会静音选项)与 content?(会议说明);会议提醒 ImMeetingRemindContent 新增 creatorId;聊天事件新增 action(原始广播名)与 isSystem(主持人后台下发的系统消息)。

变更

  • subscribeRemoteVideoMcu() 改为无参、频道级订阅合成画面(接 SRTC 1.2.0 的 Channel.subscribeRemoteVideoMcuTrack)。合成流由服务端以保留身份 __mcu__ 发布、不在会议成员里,旧版按成员 uid 去找画面,永远订阅不到。旧的 uid 参数保留为可选、传了被忽略,旧调用照常编译。
  • mcuStop(meetingId, taskType?):taskType 可省略(停掉全部任务),并接受原始数字。服务端的 task_type 是按位组合(1 录像、2 合流、4 录音、8 直播流),自动录制起的任务可能是 9 这类组合值,停它时直接传 RoomMcuTaskEventData.taskTypeRaw。

修复

  • 用户从状态栏胶囊 / 控制中心停止屏幕共享后,远端冻屏:旧版轨道仍在发布、服务端也不知道已经停了。现在 SDK 接住系统侧停止,自动撤发布、通知服务端并上抛 onRoomShareStop。
  • 本端发起的白板共享用 stopShare() 停不掉:旧版没有屏幕轨道时直接返回、不通知服务端。现在与其它端一致,本端与远端都会收到 onRoomShareStop。
无不兼容变更,1.3.0 的接入代码可直接升级。依赖不变,仍搭配 SRTC 1.2.0,只需替换 smeeting 的 HAR 并改 oh-package.json5 里的文件名。集成方式补充:除了模块级声明两个 HAR,工程级 oh-package.json5 还要再声明一次 srtc,否则 smeeting 引用的 SRTC 类型解析不到、编译报错。1.3.0 及以前同样需要,之前的文档漏写了,见集成方式。1.3.0 记的两条已知限制均已解决:会议后端已接受鸿蒙终端类型(10070 不再出现);合成画面改为频道级订阅后可正常订阅。

[1.3.0] - 2026.10.14

新增

  • SMeetingDelegate.onReceiveStreamStatusChange(meeting, status: ReceiveStreamStatus):某一路远端视频收流超时 / 恢复,对应 Swift 版 meeting(_:didChangeReceiveStreamStatus:)。透传 SRTC 1.2.0 的同名事件,按轨道判定,用来开关画面上的「加载中」指示。只报跳变,初始状态按 SRTC RemoteVideoTrack.isReceiveTimedOut 现判。

变更

  • 依赖升到 SRTC 1.2.0(HAR 的 peerDependencies 为 srtc@1.2.0),SRTC 本版的新增能力见 SRTC 鸿蒙版更新日志。
无不兼容变更,1.2.1 的接入代码可直接升级,但必须同时把 SRTC 换成 1.2.0(两个 HAR 都要替换并改 oh-package.json5 里的文件名),见集成方式。已知限制不变:会议后端仍拒绝鸿蒙终端类型(10070);subscribeRemoteVideoMcu 尚未改用 SRTC 1.2.0 的频道级合成流订阅,服务端合成画面仍订阅不到,待后续版本。

[1.2.1] - 2026.10.10

新增

  • SignInfo 新增可选的 hostName(发起人昵称)。服务端的签到列表目前不返回该字段,一般为 undefined,取不到时按 uid 找会中成员,或使用 onSignInActivity 里的 hostName。

修复

  • 授予 / 撤销联席主持人后,按 RoomInfo.coHosts 判断的角色慢一拍:房间的联席名单比角色变更广播晚到,旧版在 onUserRoleChange 发出时 coHosts 还是旧的 —— 授予后仍算普通成员、撤销后仍算联席。现在事件发出前 SDK 已按新角色同步好 coHosts,随后到达的房间属性仍以服务端为准。
无不兼容变更,1.2.0 的接入代码可直接升级。依赖不变,仍搭配 SRTC 1.1.0。

[1.2.0] - 2026.10.10

AgentStatus(可邀请设备的在线状态)取值已改为与服务端一致,属不兼容变更:旧版定义是 idle = 1(空闲)/ busy = 2(忙碌)/ offline = 3(离线),与服务端不符 —— 服务端会下发 status = 0,且 2 实际表示离线。新定义为 unknown = 0(未知)/ online = 1(在线)/ offline = 2(离线),服务端下发其它取值或缺失时为 unknown。旧名 idle / busy 保留为废弃别名(取值分别为 1 / 2);按数字比较(如 === 3 判离线)的代码升级后行为会变,需要自查。依赖不变,仍搭配 SRTC 1.1.0。

新增

  • AgentInfo 新增 connParams(服务端 conn_params,原样透传)与 connSubjects(GB28181 通道表,Map<通道编号, 通道名>,没有时为空表)。国标设备要按「设备编号:通道编号」邀请,直接用 contact 会被服务端拒绝;通道展开由调用方完成。

修复

  • 集成方开启属性混淆后拿不到 GB28181 通道:consumer-rules.txt 补了 conn_params、subjects 两个字段的 keep。
  • AgentInfo.id 在服务端下发数字 ID 时不再为空字符串。

[1.1.0] - 2026.10.08

本版含不兼容变更:错误码按 SMeeting 统一码表调整、报错文案改为英文,McuTaskStatus 的取值与服务端对齐。凡是按 SMeetingError.code 的数值、按 detail 的中文文字、或拿 McuTaskStatus 的数字做判断的代码,升级后都需要调整,请先对照下方的旧码 → 新码表。必须与 SRTC 1.1.0 搭配使用:本版用到 SRTC 1.1.0 才有的 SRTC.setLanguage 与 CaptureDevice,搭配 SRTC 1.0.x 无法编译。

新增

  • SMeetingEngine.setLanguage(lang?) / SMeetingEngine.language(静态):直接透传 SRTC 的 SRTC.setLanguage / SRTC.language,会议层与 RTC 层共用这一个进程级设置。所有会议请求都带 Accept-Language,后端业务错误(码 ≥ 1000)的文案随之中 / 英;SDK 自身的报错一律英文,不受影响。传空恢复为跟随系统语言。
  • SMeetingError.baseCode(低 3 位语义码,跨端统一;后端业务码返回自身)与 httpStatus(HTTP 非 200 时的状态码)。
  • 新增错误种类:userNotFound(208010)、invalidState(208011)、invalidArgument(208012)、remoteTrackUnavailable(208209)、requestTimeout(208353)、responseParseFailed(208356)。
  • smeeting 转出 SRTC 的 SRTCError / SRTCErrorKind / CaptureDevice,只依赖 smeeting 的业务代码也能直接 instanceof SRTCError。
  • McuTaskType 新增 audio = 4(录音)、live = 8(直播流)与兜底的 unknown = -1;McuTaskStatus 新增 waitStart = 0(待开始)、waitEnd = 2(待结束)与兜底的 unknown = -1。unknown 只用于解码,不要拿来发请求。
  • RoomMcuTaskEventData 新增 taskTypeRaw / taskStatusRaw(服务端下发的原始值,枚举为 unknown 时用它判断)。
  • McuRecordDetail 新增 taskType、beganAt、endedAt、recordCount、totalDuration、totalSize、records、now;新增录制文件类型 McuRecordFile(recordId、seq、vodSize、duration、beganAt、endedAt、offsetMs、reason、addr 等,addr 为有效期 2 小时的预签名播放地址)。

修复

  • McuTaskStatus 与服务端取值对齐:旧版定义为 running = 1、exception = 2、normal = 3,与服务端下发的 task_status 错位——服务端的 2 是「待结束」、3 才是「异常结束」、4 才是「正常结束」,导致「待结束」被报成 exception、「异常结束」被报成 normal,真正的「正常结束」被整条丢弃。现在为 waitStart = 0 / running = 1 / waitEnd = 2 / exception = 3 / normal = 4。
  • mcu_task 事件遇到不认识的取值不再整条丢弃:此前 task_type / task_status 不认识时 onRoomMcuTask 根本不回调,现在照常回调,枚举落到 unknown,原始值见 taskTypeRaw / taskStatusRaw。事件里缺 task_status 字段时按 0(waitStart)处理,与 Swift 一致。
  • mcuRecordDetail 适配服务端「任务 + 录制文件」两级返回:任务 ID 兼容新的 task_id 与老的 id,新老服务端的返回都能解出来,缺失的字段取零值;任务状态缺失或不认识时为 unknown(以前默认成 running)。

变更

  • 报错文案全部改为英文(如 notLoggedIn 由「您尚未登录meeting sdk」改为 Not logged in to the meeting SDK)。detail 是给开发者和日志看的,给终端用户的提示请按 code / baseCode 自行映射。
  • 会议层错误码按「208 + 统一码表低 3 位」出码,与 Swift 等端同号;HTTP 状态码不再拼进错误码。
  • McuRecordDetail 的 vodKey / vodSize / mcuAt / mcuDur 标为废弃并改为可选(新服务端不再返回 vodKey / vodSize):录像文件改看 records,vodSize → totalSize,mcuAt → beganAt,mcuDur → totalDuration。
  • 依赖的 SRTC 升级至 1.1.0(peerDependencies)。升级 SMeeting 时必须同步替换 SRTC 的 HAR。

旧码 → 新码对照

未变化的码:notLoggedIn 001、tokenExpired 002、notInMeeting 003、unauthorized 004、tokenInvalid 005、alreadyInMeeting 006、networkError 007(连不上等传输层失败)、deviceError 008、internalError 009(仅文案改英文)。后端业务码(≥ 1000)仍原样透传,文案随 setLanguage 返回中文或英文。

已知限制

  • 会议后端目前拒绝鸿蒙终端类型:登录(login)时会收到后端错误 10070(「终端类型必须小于或等于7」,鸿蒙的 device_type 为 8),需等后端放开后才能入会。
  • 其余限制同 SRTC 1.1.0。
升级步骤:替换 libs/ 下两个 HAR,并把 oh-package.json5 里 smeeting 与 srtc 的版本号都改为 1.1.0,见集成方式。编译层面需要留意:用到 McuRecordDetail.vodKey 等四个字段的地方要按可选类型处理(建议直接换成新字段);对 McuTaskStatus / McuTaskType 做 switch 的代码请补上 unknown 或 default 分支。

[1.0.0] - 2026.09.07

新增

  • 本端统计:SMeetingEngine.getStats() 返回 RtcStatsSnapshot,包含实际编码分辨率与帧率、编码器降级原因、发送侧丢包与往返时延。与 onQualityReport 互补——后者由 SFU 下发、只有 SeaStart 引擎有,而本端统计两条引擎路径都能出。
  • 媒体面连接状态:新增回调 SMeetingDelegate.onMediaStateChange,参数类型 MediaConnectionState。它反映音视频通路的连通性,与信令面的连接 / 重连事件是两条独立的线。
  • 聊天消息类型:ChatMessageInfo 与 chatMessageInfoFromJson。
  • 会控事件:主持人请求开启共享 AdminRequestOpenShareEventData。
  • 摄像头变焦:cameraZoomRange() 与变焦设置接口。
  • 长时任务:支持通话切后台后继续采集与推流。

修复

  • 长时任务在部分场景下启动失败(9800005 bgMode is invalid):ability 需额外声明 "backgroundModes": ["audioRecording"]。

变更

  • 依赖的 SRTC 升级至 1.0.0(peerDependencies)。升级 SMeeting 时必须同步替换 SRTC 的 HAR。
不要把媒体面状态和信令面状态当成一条线。信令面(ConnectionState)与媒体面(MediaConnectionState)各自断开、各自恢复:信令断了媒体流往往照旧,反过来媒体通路失败时信令通常一切正常。历史上把两者合并导致过两种真实故障——“网络恢复提示已消失、画面还是黑的”,以及”媒体已永久断开、界面仍显示已连接”。
不在会中时相关接口走降级返回而不抛错:getStats() 返回空快照,cameraZoomRange() 返回 unsupported。

[0.0.1] - 2026.09.07

首个版本

  • 账号与会议管理:login / logout;createRoom / updateRoom / cancelRoom / detailRoom;attendeeRoom(即将开始)与 attendedRoom(历史会议)分页查询;支持预约会议(planTime / planDur / conferee)。
  • 入会:enterRoom 支持按 meetingId 或 roomNo 入会,可带入会密码;exitRoom 离会。
  • 媒体一体化接口:requestOpenMic / requestOpenCamera / requestShare 内部完成”后端授权 → 建轨道 → 采集 → 发布”,无需自行拼装;配套 closeMic / closeCamera / stopShare、setMicMuted、switchCamera。
  • 订阅:subscribeRemoteVideoTrack / subscribeRemoteAudioTrack 按成员订阅,支持 MCU 合流轨道(subscribeRemoteVideoMcu);toggleRemoteAudioMute 切换本地播放而不退订。
  • 会控:全体静音 / 禁摄像头 / 禁共享 / 禁聊天 / 禁截图 / 水印 / 锁定会议、成员改名与角色变更、移交主持人、请求开麦开摄像头、移出会议、举手确认、呼叫成员与短信提醒。
  • 等候室:开关等候室、查询等候成员、移入移出。
  • 子会议:创建 / 改名 / 分配成员 / 删除 / 启停 / 成员跨子会议移动。
  • 录制与资源:MCU 录制任务启停与详情、资源列表与创建、预签名上传下载、会议背景与附件。
  • 签到:发起 / 结束 / 签到 / 统计 / 明细。
  • 聊天:sendRoomChatMessage 支持群发与私聊。
  • 事件:SMeetingDelegate 覆盖连接状态、成员进出、成员与房间状态变化、聊天、会控指令、等候室、子会议、签到、点名、音频路由与设备变化。
  • 音频路由:扬声器 / 听筒的持久设置与通话中临时切换;外接设备由系统接管,SDK 只上报。
必须同时引入 SRTC 与 SMeeting 两个 HAR。HarmonyOS 的 HAR 没有依赖传递性,SMeeting 把 srtc 声明为 peerDependencies,需要由你的工程提供。只声明 smeeting 会在 ohpm install 阶段报缺少 srtc。
视频编码只有硬编,没有软编兜底。视频预设统一使用 H264,底层只走设备硬件编解码器。模拟器上建不出编码器;在缺少 H264 硬编能力的真机上,SDK 不报错而是静默退回 VP8,表现为和其它端互通不上。自测时请确认实际协商到的编码格式。
仅支持 arm64-v8a。升级需要手动替换 HAR 文件。 ohpm 没有按 Git tag 解析版本的机制,SDK 通过 file: 路径引用具体的 HAR 文件名,升级时要同步修改 libs/ 下的文件与 oh-package.json5 中的版本号。两个 SDK 独立编号,当前 SMeeting 0.0.1 依赖 SRTC 0.0.1。