跳转到主要内容

[1.6.0] - 2026.10.30

新增

  • activeSpeakersDidChange 含自己:快照里新增本端那一条(ActiveSpeakerInfo.isLocal == true),开麦且在说话时出现,与远端同一量纲(0~1,按 1/8 分档),一个阈值即可画「我」的音柱和「正在说话」。不必再自己挂 meeting.srtc.audioCaptureProcessor 算本端音量。
  • SMeetingEngine.activeSpeakerOptions:透传 SRTC 的 activeSpeakerOptions,可关掉本端(includeLocal = false)或调整采样参数,建议入会前设置。

变更

  • 依赖升至 SRTC 1.6.0。网宿(CDN)会议里远端 level 的口径与 SFU 会议统一(以前偏大两三倍且不分档),按数值写死阈值的请重新核对。
API 只新增不删改,1.5.5 的接入代码可直接编译;快照默认多了自己这一条,若业务把快照里的人都当远端处理,请用 isLocal 区分。做 iOS 全屏共享的工程,扩展 target 那条 srtc-swift-sdk 依赖请一起改成 exact: "1.6.0"。

[1.5.5] - 2026.10.27

修复

  • 网宿 CDN 频道里开着云录制切换屏幕共享,录制会被云端判为推流中断:视图录制(startViewCaptureShare())与屏幕共享轮流发布时,旧版每次都换一个新轨道 ID,而网宿的流名由轨道 ID 决定,云端录制只拉开录时的那一路流。表现为「开录 → 开共享 → 停共享」后约 30~45 秒收到 roomMcuTask 异常(检测到推流中断了),录像只到切换前。现在同一房间里视图录制轨与屏幕共享轨沿用同一个轨道 ID,两者仍各自采集、互斥发布;录像覆盖整个过程。SFU 频道行为不变。

变更

  • SRTC 依赖升至 1.5.5(新增指定轨道 ID 的建轨接口),详见 SRTC Swift 更新日志。
  • iOS 全屏共享扩展 target 那条 srtc-swift-sdk 依赖需同步改为 exact: "1.5.5",与本版清单里 pin 的版本一致,否则依赖解析失败。
  • 网宿频道里,视图录制轨仍在发布时就去发布屏幕共享,会抛 SRTC 的 invalidState,不再出现两路同时发布;按现有用法「先 stopViewCaptureShare() 再共享」不受影响。
没有接口变化,1.5.4 的接入代码可直接升级。平台下限不变(iOS 16 / macOS 14)。

[1.5.4] - 2026.10.24

变更

  • SRTC 依赖升至 1.5.4:修复切换前后置后本端摄像头的前后置状态不更新(后置预览被镜像、关开摄像头后回到前置),详见 SRTC Swift 更新日志。会议层的 switchCamera() 直接受益,代码无改动。
  • iOS 全屏共享扩展 target 那条 srtc-swift-sdk 依赖需同步改为 exact: "1.5.4",与本版清单里 pin 的版本一致,否则依赖解析失败。
没有接口变化,1.5.3 的接入代码可直接升级。平台下限不变(iOS 16 / macOS 14)。

[1.5.3] - 2026.10.21

修复

  • 接口返回的 data 为 null 等非对象值时进程崩溃:部分接口(如 mcuRecordDetail)的回包 data 不是对象或数组时,旧版在内部转换时触发 Objective-C 异常,try / try? 都接不住,App 直接闪退(iOS 上开启云录制后查询录制详情即可复现)。现在统一抛 SMeetingError.responseParseFailed(203356 / 205356),由调用方按普通错误处理。

变更

  • SRTC 依赖仍为 1.5.3,iOS 全屏共享扩展 target 那条 srtc-swift-sdk 依赖保持 exact: "1.5.3" 不变。
只有修复,没有接口变化,1.5.2 的接入代码可直接升级。平台下限不变(iOS 16 / macOS 14)。用到录制详情的 1.5.1 / 1.5.2 接入方建议尽快升级。

[1.5.2] - 2026.10.21

修复

  • iOS 上挂了全屏共享监听后,视图录制(startViewCaptureShare())开不起来:入会后调过 prepareBroadcastShare 的 App(会议类 App 通常一进房就挂监听,等用户从系统胶囊开播),旧版会把「监听已挂上」当成「正在屏幕共享」,startViewCaptureShare() 一律抛 invalidState,云录制等依赖视图录制的功能因此拿不到画面。现在只有屏幕共享真正发布后才互斥,只挂监听不影响视图录制。
  • 同一轮停止共享并发调用时广播监听被重复拆建:会议后端下发的停止共享事件可能早于 stopShare() 的请求返回,两条路径会同时拆、建同一个广播监听,偶发停止后监听没有恢复。现在同一轮停止会合并,后到的调用等待这一轮收尾完成后再返回。

变更

  • SRTC 依赖仍为 1.5.3,iOS 全屏共享扩展 target 那条 srtc-swift-sdk 依赖保持 exact: "1.5.3" 不变。
只有修复,没有接口变化,1.5.1 的接入代码可直接升级。平台下限不变(iOS 16 / macOS 14)。

[1.5.1] - 2026.10.10

新增

  • 服务端合成画面可以订阅了:subscribeRemoteVideoMcu() / unsubscribeRemoteVideoMcu() / startPlayRemoteVideoMcu(view:)。合成画面由服务端以保留身份 __mcu__ 发布、不属于任何会中成员,所以不再需要 uid。合成任务(McuTaskType.mix)比订阅晚开始时,在 roomMcuTask 报 running 后再订一次(调用幂等)。
  • SignInfo 新增可选的 hostName(发起人昵称)。服务端的签到列表目前不返回该字段,一般为 nil,取不到时按 uid 找会中成员,或使用 signInActivity 事件里的 hostName。

修复

  • 授予 / 撤销联席主持人后,按 RoomInfo.coHosts 判断的角色慢一拍:房间的联席名单比角色变更广播晚到,旧版在 userRoleDidChange 发出时 coHosts 还是旧的 —— 授予后仍算普通成员、撤销后仍算联席。现在事件发出前 SDK 已按新角色同步好 coHosts,随后到达的房间属性仍以服务端为准。

变更

  • startPlayRemoteVideoMcu(view:uid:) 标为废弃,uid 不再使用,等同 startPlayRemoteVideoMcu(view:)。旧实现按「合成画面是某个成员的摄像头轨道」查找,在当前链路下必抛 remoteTrackUnavailable。
  • SRTC 依赖升至 1.5.3(新增频道级合成视频订阅,见音视频 SDK 的更新日志)。iOS 全屏共享的扩展 target 那条 srtc-swift-sdk 依赖请同步改为 exact: "1.5.3"。
只新增接口与修复,1.5.0 的接入代码可直接升级(用到旧的 startPlayRemoteVideoMcu(view:uid:) 会有废弃警告)。平台下限不变(iOS 16 / macOS 14)。已验证:屏幕共享扩展进程被系统杀掉或崩溃(人还在会里)时,SDK 会自动结束共享并通知会议后端,其它端 1 秒内收到停止事件,无需业务处理。

[1.5.0] - 2026.10.10

AgentStatus(可邀请设备的在线状态)取值已改为与服务端一致:旧版定义是 idle = 1(空闲)/ busy = 2(忙碌)/ offline = 3(离线),与服务端不符 —— 服务端会下发 status = 0,旧版遇到它整页 SIP / H323 / RTSP / GB28181 设备列表解码失败。新定义为 unknown = 0(未知)/ online = 1(在线)/ offline = 2(离线),服务端出现其它取值时解成 .unknown。旧名 idle / busy 保留为废弃别名(分别等于 .online / .offline),源码照常编译;但按 rawValue 与数字比较(如 == 3 判离线)的代码升级后行为会变,需要自查。版本号只升 minor,按 from: "1.4.x" 接入的工程会自动解析到本版。

新增

  • IM 事件真正派发:enableIm 之后,被叫(meeting(_:imCallCalling:))、会议提醒(imMeetingRemind)、等候室放行(imAdminMoveOutWaitingRoom)、小组求助(imUserHelpSubMeeting)以及 IM 重连中 / 已重连 / 被动断开这几个回调现在都会触发(旧版这些回调没有派发点,永远收不到)。新增 meeting(_:imDidConnect:)(ImConnectEventData)与 meeting(_:imDidReceiveMessage:)(ImMessageEventData,任何 action 的原始消息透传)。ImMeetingRemindContent 新增 creatorId;ImDisconnectEventData 新增 disconnectReason、errorCode、errorMessage。主动 disableIm 不再上抛断开回调。
  • 签到导出:signInExportDetail(epoch:destination:),下载签到明细落盘并返回本地文件地址。
  • 小组里拉主会场在线成员:新增重载 adminListOnlineMember(meetingId:page:perPage:),原方法不变。
  • 转移主持人带出原主持人:新增 meeting(_:roomHostDidMove:)(RoomHostMoveEventData,含原主持人 sourceUid),原主持人本地降为普通成员并补发 userRoleDidChange。
  • 系统消息与普通聊天分离:RoomChatMsgEventData 新增 action 与 isSystem,主持人发出的系统消息可以与普通聊天区分。
  • MeetingInfo 新增 entryMutePolicy(入会静音策略)与 content,均为可选,缺失或取值不认识时为 nil。
  • AgentInfo 新增 connParams(连接参数)与 connSubjects(GB28181 通道表)及公开构造器。国标设备要按「设备编号:通道编号」邀请,通道展开由调用方完成。

修复

  • detailRoom(会议详情)必失败:服务端的会议详情回包不带 created_at,旧版每次抛 responseParseFailed,会议详情、按房间号加入、从被叫 / 提醒 / 求助入会都走不通。现在缺失时按 0 解码。
  • 几处列表的宽松解码:空小组的 users 为 null、等候室列表不带 avatar、在线成员的 device_type / join_at 为整数,此前都会让整张列表解码失败。

变更

  • SRTC 依赖升至 1.5.2(iOS 音频会话两处修复,见音视频 SDK 的更新日志)。
  • ImEventType 新增 connected、message,RoomEventType 新增 roomHostMoved。
SMeetingDelegate 新增的回调都有默认实现,不实现不影响编译;对 ImEventType / RoomEventType 做 switch 的代码请带上 @unknown default 分支。平台下限不变(iOS 16 / macOS 14)。做 iOS 全屏屏幕共享的接入方,扩展 target 那条 srtc-swift-sdk 依赖要一并改为 exact: "1.5.2",与本版清单里 pin 的 SRTC 版本一致,否则依赖解析失败。

[1.4.1] - 2026.10.01

McuTaskStatus 的原始值已改正:旧版的定义与服务端下发的 task_status 错位(旧版 exception = 2、normal = 3,而服务端的 2 是「待结束」、3 才是「异常结束」、4 才是「正常结束」),导致服务端的「异常结束」被识别成 .normal、「待结束」被识别成 .exception,而真正的「正常结束」与「待开始」事件被直接丢弃、meeting(_:roomMcuTask:) 收不到。成员名不变、原始值已改正,按成员名(.normal / .exception)判断的代码升级后即得到正确语义;直接拿 rawValue 与数字比较的代码需要自查。

修复

  • McuTaskStatus 与服务端取值对齐:waitStart = 0(待开始)、running = 1、waitEnd = 2(待结束)、exception = 3、normal = 4;waitStart / waitEnd 是指令已下发、底层任务尚未确认的临时过渡状态。
  • mcu_task 事件遇到不认识的取值不再整条丢弃:此前服务端下发本版本 SDK 不认识的 task_type / task_status 时,meeting(_:roomMcuTask:) 根本不会回调。现在照常回调,枚举落到新增的 .unknown,原始值见 RoomMcuTaskEventData 新增的 taskTypeRaw / taskStatusRaw。
  • mcuRecordDetail(meetingId:) 适配服务端新的「任务 + 录制文件」两级返回:服务端已把任务 ID 的键名改为 task_id,并把录像文件信息下沉到分片列表,旧版在新服务端上解码失败、直接抛错。现在新老服务端的返回都能解出来,缺失的字段取零值。

新增

  • McuTaskType 新增 audio = 4(录音)、live = 8(直播流)与兜底的 unknown = -1;McuTaskStatus 新增 waitStart、waitEnd 与 unknown。unknown 只用于解码,不要拿来发请求。
  • McuRecordDetail 新增 taskType、beganAt、endedAt、recordCount、totalDuration、totalSize、records、now;新增录制文件类型 McuRecordFile(recordId、seq、vodSize、duration、beganAt、endedAt、offsetMs、reason、addr 等,addr 为有效期 2 小时的预签名播放地址)。

变更

  • McuRecordDetail 的 vodKey、vodSize、mcuAt、mcuDur 标为废弃,类型改为可选(新服务端不再返回 vodKey / vodSize):录像文件改看 records,vodSize → totalSize,mcuAt → beganAt,mcuDur → totalDuration。
  • SRTC 依赖升至 1.5.1(AudioRoute.displayName 按系统语言返回中 / 英文,见音视频 SDK 的更新日志)。
升级时需要留意两处编译层面的变化:用到 McuRecordDetail.vodKey 等四个字段的代码会出现废弃告警,且它们变成了可选类型,按非可选使用的地方要改(建议直接换成上面的新字段);对 McuTaskStatus / McuTaskType 做 switch 的代码,请带上 @unknown default 分支。平台下限不变(iOS 16 / macOS 14)。做 iOS 全屏屏幕共享的接入方,扩展 target 那条 srtc-swift-sdk 依赖要一并改为 exact: "1.5.1",与本版清单里 pin 的 SRTC 版本一致,否则依赖解析失败。

[1.4.0] - 2026.09.30

本版是破坏性变更:错误码按跨端统一码表(第 2 版)调整,报错文案改为英文。凡是按 SMeetingError.code 的数值、或按 message / localizedDescription 的中文文字做判断的代码,升级后都需要调整;下表中「改抛了另一个 case」的场景,switch 分支也要改。版本号只升 minor,按 from: "1.3.x" 接入的工程会自动解析到本版,升级前请先看完下表。

新增

  • SMeetingEngine.language(String?,如 "en"、"zh-CN";nil = 跟随系统语言)与只读的 currentLanguage。它与 meeting.srtc.language 是同一个进程级设置:会议层和 RTC 层请求后端都带 Accept-Language,后端业务错误(码 ≥ 1000)的文案随之中 / 英;SDK 自身的报错一律英文,不受它影响。建议在 login 之前设置。
  • SMeetingError.baseCode(低 3 位语义码,跨端统一)与 httpStatus(HTTP 非 200 时的状态码,仅 httpError 有值)。
  • SMeetingError 实现 CustomNSError:桥接成 NSError 后 domain = "cn.seastart.smeeting"、code 为完整码(如 203003)。
  • 新增错误 case:httpError(status:message:)(007)、userNotFound(010)、invalidState(011)、invalidArgument(012)、remoteTrackUnavailable(uid:desc:)(209)、requestTimeout(353)、requestCancelled(354)、responseParseFailed(356)。

变更

  • 报错文案全部改为英文(如 notLoggedIn 由「您尚未登录meeting sdk」改为 Not logged in to the meeting SDK)。message 是给开发者和日志看的,给终端用户的提示请按 code / baseCode 自行映射,不要直接展示 message。
  • HTTP 状态码不再拼进错误码:此前 HTTP 500 会报成 203500、响应解析失败会算出 202999 这类码,现在 HTTP 非 200 报 httpError(203007,状态在 httpStatus),响应解析失败报 responseParseFailed(203356)。
  • 采集 / 权限错误原样透传 RTC 层的 SRTCError(如 103231 无摄像头权限、103251 无麦克风权限、103039 屏幕共享被拒),catch 时两类都要处理。
  • SRTC 依赖升至 1.5.0(同样是错误码重排 + 英文化,见音视频 SDK 的更新日志)。

旧码 → 新码对照

iOS 前缀为 203、macOS 为 205,下表以 iOS 为例(macOS 把前缀换成 205)。 未变化的码:notLoggedIn 001、tokenExpired 002、notInMeeting 003、unauthorized 004、tokenInvalid 005、alreadyInMeeting 006、deviceError 008、internalError 009(仅文案改英文)。后端业务码(≥ 1000)仍原样透传,文案现在随 language 返回中文或英文。
已有的 SMeetingError case 一个没删、签名没改,编译层面 1.3.10 的接入代码可直接升级;需要检查的是按数值 / 中文文案判断错误、以及 switch 里依赖上表旧 case 的分支。平台下限不变(iOS 16 / macOS 14)。做 iOS 全屏共享的工程,扩展 target 那条额外的 srtc-swift-sdk 依赖需同步改为 exact: "1.5.0",与本包清单里 pin 的版本保持一致,否则依赖解析会直接失败。

[1.3.10] - 2026.09.23

变更

  • SRTC 依赖由 1.4.6 升至 1.4.7。该版为纯修复:未知 device_type 不再让整份成员列表解析失败、SFU 逐条拒绝的订阅不再静默失败(补重试与登记回滚),详见 SRTC 的更新日志。
本版没有会议层自身的功能改动,仅为与 SRTC 1.4.7 保持配套关系而提升版本号,没有公开 API 变动,没有破坏性变更,1.3.9 的接入代码可直接升级。平台下限不变(iOS 16 / macOS 14)。做 iOS 全屏共享的工程,扩展 target 那条额外的 srtc-swift-sdk 依赖需同步改为 exact: "1.4.7",与本包清单里 pin 的版本保持一致,否则依赖解析会直接失败。

[1.3.9] - 2026.09.23

修复

  • 主持人强停共享后,共享状态会被重新上抛:admin_stop_room_share 此前只停了本端发布,没有同步清掉房间的共享状态(share_state / share_uid)。残留的状态会被随后到达的轨道或属性刷新重新判定成「有人正在共享」,表现为共享刚被强停就又冒出来、房内出现停不掉的共享。现在强停时一并收敛房间状态。
  • 屏幕共享开始事件补上第四条汇合路径:1.3.8 的三路汇合仍漏了「用户快照刷新(freshUserInfo)先于其它三路到达」这一时序。此时快照会把 shareState 静默改成 screen,各路径共用的防重条件反过来把后到的那一路也拦掉,结果是事件一次都不发,房内其他人收不到共享、画面不显示。现在快照刷新在 shareState 跃变时也会上抛事件,四路中谁最后到齐由谁触发。该跃变判定只对远端生效,本端共享仍由发布与停止流程显式上抛。
  • 共享者直接离会后,会议永久停在「某人正在共享」:共享方进程被杀或断网时不会有 user_stop_room_share,此前没有任何路径收敛,画面一直挂着。现在在成员离房(userDidLeave)时收敛房间共享状态并上抛停止事件——「人已离房」不是暂态,比轨道消失可靠。

变更

  • SRTC 依赖保持 1.4.6 不变,本版只有会议层改动,没有公开 API 变更。
本版为纯修复,没有破坏性变更,1.3.8 的接入代码可直接升级。做 iOS 全屏共享的工程,扩展 target 那条额外的 srtc-swift-sdk 依赖仍为 exact: "1.4.6",本次无需改动。仍未覆盖「人还在会里、只有 Broadcast Extension 单独挂掉」这一种情况:此时既不会有 user_stop_room_share,也不会有成员离房事件。该场景需在共享方本端补齐,不要拿 screen 轨道消失当停止判据——轨道消失也可能只是网络抖动,会误撤画面。

[1.3.8] - 2026.09.23

新增

  • updateLocalCameraView(_:):在不中断采集的前提下,把本地摄像头预览的渲染器搬到另一个视图上。UIKit 宿主在宫格重建、首屏与视频墙切换这类布局变化里会销毁并重建承载预览的视图,此前只能关掉摄像头再开一次,现在直接搬迁即可。

修复

  • 摄像头已开启时重复调用 requestOpenCamera(view:),新传入的预览视图被忽略:此前复用已有轨道的分支直接返回,新视图没有被接上,渲染器还挂在已从视图树上摘掉的旧视图,表现为本端画面黑屏(对端一切正常)。现在复用分支会把渲染器搬到新传入的视图上。
  • 已在会中的成员收不到屏幕共享开始事件:屏幕共享的开始信号是异步汇合的——房间共享状态(user_start_room_share 广播、频道属性里的 share_state / share_uid)与 screen 轨道各走各的路径。此前两条路径各自判定,且没有覆盖属性刷新这一路:广播先到时轨道还没登记、轨道先到时房间状态还没刷新,两边都各自放弃,之后属性刷新到了也没有人补判,结果是已经在会中的成员完全收不到 ROOM_SHARE_START,退出重进反而能看到(重进走的是另一条已有共享的通知路径)。现改为三路汇合判定,谁最后到齐由谁触发,防重逻辑不变。

变更

  • SRTC 依赖升级到 1.4.6(含摄像头方向与横屏屏幕共享画面倒 180° 两项修复,详见音视频 SDK 的更新日志)。
做 iOS 全屏共享的工程,扩展 target 那条额外的 srtc-swift-sdk 依赖要同步改为 exact: "1.4.6",与本包 pin 的版本保持一致,否则依赖解析冲突。横屏共享画面倒 180° 的修复落在 SRTCBroadcastKit(本次 1.0.11)里,扩展侧不升就不会生效。
本版为纯新增 API + 修复,没有破坏性变更,1.3.7 的接入代码可直接升级。

[1.3.7] - 2026.09.18

新增

  • 会议标题变化事件:新增 SMeetingDelegate 的 meeting(_:roomTitleDidChange:) 回调、RoomTitleChangeEventData(title / previousTitle)与 RoomEventType.roomTitleChanged。主持人改主会议标题、以及小组会议改名(adminUpdateSubMeetingTitle)都会触发,对应老 MeetingKit 的 onRoomMeetingTitleChanged:。
  • 远端视频收流超时 / 恢复:新增 meeting(_:didChangeReceiveStreamStatus:) 回调与 RoomEventType.receiveStreamStatusChanged,按轨道判定某一格画面是否停止出帧,用来开关「加载中」指示。载荷直接复用音视频 SDK 的 ReceiveStreamStatus,未再包一层会议专属结构。对应老 MeetingKit 的 onReceiveStreamStatusChange:streamType:status:。
  • 音频单元启停:新增 SMeetingEngine.setAudioModuleEnabled(_:) 与 isAudioModuleEnabled(iOS),是音视频 SDK AudioRouteSession 同名接口的薄封装,供录像直播课这类纯本地播放场景使用。

变更

  • SRTC 依赖升级到 1.4.5。
setAudioModuleEnabled(false) 期间通话音频收不到也发不出,本地播放结束后必须调回 true。重新入会会自动复位为 true,手动停用的状态不会跨会议泄漏。做 iOS 全屏共享的工程,扩展 target 那条额外的 srtc-swift-sdk 依赖要同步改为 exact: "1.4.5",与本包 pin 的版本保持一致,否则依赖解析冲突。
roomTitleDidChange 的载荷没有 opUid:会议改名没有独立的广播指令,事件是频道属性更新后比对标题得出的,属性里只有结果没有操作者。后端补上对应广播指令后会再带上。三个协议方法均带默认空实现,无破坏性变更,1.3.6 的接入代码可直接升级。不要用 connectionQualityDidChange 代替收流状态事件:前者是整条链路的质量档位,不是某一路画面的卡顿,详见音视频 SDK 的更新日志。

[1.3.6] - 2026.09.17

新增

  • MeetingUserInfo 新增 drawDisabled 字段,可直接读取成员的涂鸦禁用状态。
  • 新增 SMeetingDelegate 的 meeting(_:userDrawDisabledDidChange:) 回调与 UserDrawDisabledChangeEventData,主持人改动成员涂鸦权限时触发,见主持人管控。

变更

  • 此前仅有 adminUpdateUserDrawDisabled(targetId:drawDisable:) 这个设置接口,状态读取与变化事件缺失,涂鸦权限无法在业务侧完整实现,本版补齐。协议方法带默认空实现,无破坏性变更,1.3.5 的接入代码可直接升级。
  • SRTC 依赖保持 1.4.4。

[1.3.5] - 2026.09.15

变更

  • 视图录制共享在 WangSu(CDN) 推流中附带麦克风音频;移除共享接口 messageOnly 模式。依赖 SRTC 1.4.4。

[1.3.4] - 2026.09.15

新增

  • startViewCaptureShare():创建并发布使用 screen 描述的自定义视频轨道,调用方可将视图渲染为 CVPixelBuffer,通过返回的 LocalVideoTrack.pushFrame 持续推帧。
  • stopViewCaptureShare():停止视图录制视频轨道,不关闭或取消发布麦克风。使用方式与限制见媒体控制接口。

变更

  • SRTC 依赖保持 1.4.3,现有接入代码兼容;使用新增接口需将 SMeeting 升至 1.3.4。

[1.3.3] - 2026.09.15

变更

  • 依赖的 SRTC 升级到 1.4.3:WangSu(CDN) 屏幕共享流附带一路音频供云端录制使用,并修复了取消发布音频失败后麦克风轨道句柄丢失的问题,详见音视频 SDK 的更新日志。本版本 SMeeting 自身无改动,无公开 API 变动,1.3.2 的接入代码可直接升级。
iOS 全屏共享的扩展 target 那条额外依赖要跟着升到 1.4.3:.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.3")。它必须与本 SDK 清单里 pin 的版本一致,否则依赖解析冲突,见集成方式。

[1.3.2] - 2026.09.12

新增

  • requestShare(source:preset:view:messageOnly:byAdmin:adminUid:)新增excludedWindowIds与excludesCurrentApplication两个带默认值的参数,透传给音视频层,用于 macOS 整屏共享时挖掉自家的某些窗口。现有调用点源码兼容。

变更

  • 依赖的 SRTC 升级到 1.4.2:macOS 整屏共享改为默认包含本 App 自己的窗口(此前整个进程都被排除),并修复了「只共享屏幕音频时麦克风被一起发出去」,详见音视频 SDK 的更新日志。
会中主窗口通常正在渲染远端画面。整屏共享放开自身窗口后,如果界面上有共享预览、或是同机双开自测,这类窗口会形成无限镜像。把它们的 ID(UInt32(NSWindow.windowNumber))放进excludedWindowIds:
确实要回到旧的「整个 App 都不共享」行为,把excludesCurrentApplication置true。
iOS 全屏共享的扩展 target 那条额外依赖要跟着升到 1.4.2:.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.2")。它必须与本 SDK 清单里 pin 的版本一致,否则依赖解析冲突,见集成方式。

[1.3.1] - 2026.09.11

变更

  • 依赖的 SRTC 升级到 1.4.1:修复 WangSu(CDN) 频道下活跃说话人事件不触发的问题。会议若使用 CDN 流媒体,SMeetingDelegate的meeting(_:activeSpeakersDidChange:)现在同样会收到事件(此前仅 SeaStart 频道有数据),详见音视频 SDK 的更新日志。
iOS 全屏共享的扩展 target 那条额外依赖要跟着升到 1.4.1:.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.1")。它必须与本 SDK 清单里 pin 的版本一致,否则依赖解析冲突,见集成方式。

[1.3.0] - 2026.09.09

新增

  • 虚拟背景:SMeetingEngine新增installVirtualBackground(modelPath:)、uninstallVirtualBackground()、enableVirtualBackground(_:)、isVirtualBackgroundEnabled、setVirtualBackgroundBlur(level:)、setVirtualBackgroundImage(_:)、setVirtualBackgroundInferenceInterval(_:)、setVirtualBackgroundMaskSync(_:),以及实例访问器virtualBackground(诊断用只读状态与丢帧计数),装载不需要授权密钥,详见虚拟背景;
    • 属设备级配置,设置同时作用于全部会议;会中切换摄像头、关掉摄像头再打开、断线重连后都不需要业务层重新下发。

变更

  • 依赖的 SRTC 升级到 1.4.0(虚拟背景、DegradationPreference真正生效、预设改为maintainResolution、macOS 系统默认输出设备接口),详见音视频 SDK 的更新日志。
最低系统要求抬到 iOS 16.0 / macOS 14.0(此前为 iOS 13.0 / macOS 10.15)。这是破坏性变更:低于此下限的工程解析不到本版本及以后的版本,报的是依赖解析失败而不是编译错误。下限来自音视频层——SwiftPM 的platforms:是包级的,依赖方只能等于或高于被依赖方。
iOS 全屏共享的扩展 target 那条额外依赖要跟着升到 1.4.0:.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.0")。它必须与本 SDK 清单里 pin 的版本一致,否则依赖解析冲突,见集成方式。

[1.2.1] - 2026.09.07

修复

  • 修复远端屏幕共享状态的判定:成员的shareState现在要求「房间共享状态(share_state/share_uid)+ 存在 screen 轨道」两者都满足才跃变为共享中,不再单凭轨道存在就判定。修掉了轨道先于房间状态到达时的误报,以及房间状态未变、轨道短暂消失时误报「共享已停止」。
  • 白板共享(whiteBoard)无媒体轨道,仍完全由房间 props 推导,行为不变。

变更

  • 依赖的 SRTC 升级到 1.3.2(含 mqttcontent为null的崩溃修复,以及DeviceType.harmonyOS)。

[1.2.0] - 2026.08.20

新增

  • iOS 全屏屏幕共享:新增prepareBroadcastShare(appGroup:preset:)、publishBroadcastShare(view:byAdmin:adminUid:)、stopBroadcastListening()、requestShare(broadcastAppGroup:...)与只读属性isShareBroadcastActive,可共享整个系统屏幕(此前 iOS 只能采到本 App 画面),需额外集成一个 Broadcast Upload Extension,详见屏幕共享;
  • 新增共享出帧事件meeting(_:shareBroadcastDidStart:)与meeting(_:shareBroadcastDidFinish:),用于区分「监听已挂上」与「真的有画面了」,对应数据类型ShareBroadcastStartEventData、ShareBroadcastStopEventData;
  • iOS 音频路由:新增defaultAudioRoute(持久默认)、setAudioRoute(_:)与clearAudioRouteOverride()(临时切换),以及currentAudioRoute、effectiveAudioRouteTarget、audioRouteOverride、isExternalAudioRouteActive、isAudioSessionActive、audioCallState、availableAudioRoutes()等只读状态,详见音频路由;
  • 新增音频路由事件meeting(_:audioRouteDidChange:)与meetingAudioRouteDidRecoverFromInterruption(_:),对应数据类型AudioRouteChangeEventData;
  • 新增通话质量事件meeting(_:didReceiveQualityReport:)、meeting(_:connectionQualityDidChange:)、meeting(_:activeSpeakersDidChange:)、meeting(_:didSwitchLayer:),数据结构直接复用 SRTC 的QualityReport、ConnectionQualityChange、ActiveSpeakersSnapshot、LayerSwitchedInfo。

变更

  • 依赖SRTC升级至1.3.0(此前为1.1.0),随之带来公开 API 上错误枚举由mqtt*改名为signaling*等变化,详见音视频 SDK 的更新日志;
  • 屏幕共享的roomShareDidStart改为以 RTC 媒体轨道为准:远端 screen 轨道到达即上报,不再要求房间共享状态同时就位。

修复

  • 修复远端成员开始共享后其它端收不到roomShareDidStart、共享画面不显示的问题(房间状态与媒体轨道到达顺序不定时,两条上报路径会互相拦掉);
  • 修复共享方进程被杀、网络断开等情况下不上报roomShareDidStop,会议状态永久停在「某人正在共享」的问题;
  • 修复白板共享在房间状态先到达时重复上报roomShareDidStart的问题;
  • exitRoom()改为精确离开会议自己那一个 RTC 频道,不再影响调用方通过meeting.srtc另外加入的频道。
iOS 上入会即申请麦克风权限、状态栏显示橙色指示点。 会议加入后 SDK 会建立通话音频通道并保持到离会,即使成员只旁听、没有开麦。这是 iOS 上音频路由可控的前提(听筒输出只存在于可录音的会话类别下),与 Zoom、腾讯会议等 App 表现一致,不是 SDK 在录音。请确保Info.plist含NSMicrophoneUsageDescription,否则 App 会崩溃。
iOS 全屏共享的扩展 target 需要额外声明一条依赖。 SRTCBroadcastKit是音视频层srtc-swift-sdk的产物,SwiftPM 不允许使用传递依赖的产品,因此要在工程里再加一条.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.3.0"),并且只加到扩展 target上,见集成方式。

[1.1.0] - 2026.08.02

变更

  • 依赖SRTC升级至1.1.0,随之带来公开 API 上不再出现底层 WebRTC 类型等变化,详见音视频 SDK 的更新日志。

[1.0.0] - 2026.08.02

新增

  • 首个正式版本,以预编译 XCFramework 形式通过 Swift Package Manager 分发,包含 iOS 真机、iOS 模拟器、macOS 三个平台切片;
  • SDK 主入口类为SMeetingEngine。