Skip to main content
事件都以可选方法的接口形式提供,只实现关心的那几个即可:
delegates 是强引用,必须成对 add / removeArkTS 既没有弱引用、也没有 deinit。注册后不摘除会导致监听者永不回收, 而且离开页面后仍然收到回调。通常在 aboutToAppear / aboutToDisappear 里配对:

ChannelDelegate

频道级事件。第一个参数恒为 channel,下表省略。

连接状态

onReconnecting / onReconnected 之间 SDK 会自行恢复发布与订阅,业务侧一般只需要 更新 UI 上的连接指示。收到 onDisconnected 才需要走「退出会议」的业务流程。
onMediaStateChange 与上面几个不是同一条线。onReconnecting / onReconnected 说的是信令面(MQTT),onMediaStateChange 说的是画面和声音还在不在。两者各自独立地断开与恢复。UI 上的「网络异常」提示应当同时接这两条线:只接信令那条会出现”提示已经消失、画面还是黑的”;只接媒体这条会漏掉成员列表已经不再更新。参数 reason 只用于日志,不要拿它做分支判断。收到 disconnected 表示 SDK 已放弃重连、不会再自行恢复。状态取值见 MediaConnectionState

成员

媒体轨道

onTrackAdded 只表示「可以订阅了」,不会自动订阅(除非入会时开了 autoSubscribeAudio / autoSubscribeVideo)。要看到画面还需要显式调用 channel.subscribeRemoteVideoTrack(uid, trackId)

频道与消息

质量与 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

相关阅读