ChannelDelegate
频道级事件。第一个参数恒为channel,下表省略。
连接状态
onReconnecting / onReconnected 之间 SDK 会自行恢复发布与订阅,业务侧一般只需要
更新 UI 上的连接指示。收到 onDisconnected 才需要走「退出会议」的业务流程。心跳失败何时触发
onDisconnected(1.1.0 起): 只有后端返回业务错误(Token 失效、被踢等,SRTCError.isServerError(error) 为 true)才退出频道,reason 为 error、error 带后端码;网络抖动或响应解码失败(108006 / 108011)不再退会,等下一次心跳重试。1.0.1 及以前一次心跳网络失败就会触发 onDisconnected。IM 心跳与 onImDisconnected 同理。成员
媒体轨道
onTrackAdded 只表示「可以订阅了」,不会自动订阅(除非入会时开了
autoSubscribeAudio / autoSubscribeVideo)。要看到画面还需要显式调用
channel.subscribeRemoteVideoTrack(uid, trackId)。onReceiveStreamStatusChange(1.2.0 起):订阅后约 3 秒收不到该路视频帧报一次 timedOut = true,帧恢复后报一次 false;首帧到达时会先收到一次 false,可据此关掉初始 loading。按轨道判定,用来开关某一格画面上的「加载中 / 对方网络异常」指示,覆盖所有已订阅的远端视频(含 MCU 合成轨,uid 为 __mcu__)。判定纯在本端,两条引擎都触发。
频道与消息
质量与 Simulcast
做 UI 指示器请用
onConnectionQualityChange(已经做过等级判定与抖动抑制),
onQualityReport 是原始采样,适合上报到自己的监控系统。
细节见通话质量。TrackDelegate
轨道级事件。第一个参数恒为track。
onTrackBindRtcTrack 是渲染的关键时机:远端轨道是信令先建对象、订阅协商完成后才绑定
底层轨道,所以拿到 Track 对象不等于已经有帧。SRTCVideoView 内部已经监听了它并
自动补挂,自己接渲染层时需要处理这一点。DeviceManagerDelegate
设备热插拔。注册在DeviceManager.shared.delegates 上。
AudioRouteSessionDelegate
音频路由与通话状态。注册在AudioRouteSession.shared.delegates 上。
外接设备由系统接管,SDK 只上报不主动切换 —— 收到
onAudioRouteChange 时更新 UI 即可,
不要试图在回调里再切回去,那会和系统抢。见音频路由。ImDelegate
频道 IM。srtc.enableIm(tokenString) 之后注册在返回的 Im 对象上。
第一个参数恒为
im。
相关阅读
- 核心概念 —— 事件模型在整体架构里的位置
- 类型定义 —— 上面各回调参数的字段说明
- SRTCEngine 接口