Skip to main content
本协议承载频道内的连接、成员、消息、码流、音频与屏幕共享事件。全部回调的首参都是事件来源的 RTCEngineChannel 实例,多频道场景下通过首参区分事件归属,频道名称可从 channel.channel 读取。 进程级共享能力事件(音频路由、网络测速、应用性能)请实现 RTCEngineDelegate
同一个 userId 可能同时出现在多个频道中。在回调里查询成员数据时,请使用首参传入的频道实例(如 [channel findMemberWithUserId:userId]),不要跨频道复用索引。

连接相关回调

engineChannelOnReconnecting:()

- (void)engineChannelOnReconnecting:(RTCEngineChannel *)channel 开始重连回调 该频道连接断开并开始重连时触发,如遇到错误 SDK 会抛出engineChannel:onDisconnected:errCode:errMsg:()回调。 参数

engineChannelOnReconnected:()

- (void)engineChannelOnReconnected:(RTCEngineChannel *)channel 重连成功回调 断线重连成功后触发。 参数

engineChannel:onDisconnected:errCode:errMsg:()

- (void)engineChannel:(RTCEngineChannel *)channel onDisconnected:(RTCLeaveReason)reason errCode:(RTCEngineError)errCode errMsg:(nullable NSString *)errMsg 连接断开事件或者被动离开频道回调 当离开原因为RTCLeaveReasonError时,表示 SDK 抛出的不可恢复的错误,比如加入频道失败等,此时需要重新获取鉴权令牌才可重新加入频道。具体错误码参考 错误码表 当离开原因非RTCLeaveReasonError时,表示被动离开频道。具体离开原因参考 RTCLeaveReason 参数

我的相关回调

engineChannel:onJoinSucceed:()

- (void)engineChannel:(RTCEngineChannel *)channel onJoinSucceed:(NSString *)userId 加入频道成功回调 调用频道实例的joinChannelWithToken:()接口执行加入频道操作后,会收到该回调;如遇到错误 SDK 会抛出engineChannel:onDisconnected:errCode:errMsg:()回调。 参数

engineChannel:onUserUpdate:()

- (void)engineChannel:(RTCEngineChannel *)channel onUserUpdate:(NSString *)userId 自己数据更新回调 服务端修改当前用户数据操作后,会收到该回调,来通知当前用户在该频道内的数据发生了改变。 参数

频道相关回调

engineChannel:onChannelUpdate:()

- (void)engineChannel:(RTCEngineChannel *)channel onChannelUpdate:(NSString *)props 频道更新回调 应用层调用服务接口执行变更频道信息操作后,会收到该回调。 参数

用户相关回调

engineChannel:onRemoteUserJoinChannel:()

- (void)engineChannel:(RTCEngineChannel *)channel onRemoteUserJoinChannel:(NSString *)userId 用户加入频道回调,包括当前用户。 事件回调engineChannel:onRemoteUserJoinChannel:engineChannel:onRemoteUserLeaveChannel:reason:只适用于维护该频道里的“用户列表”,有此事件回调不代表一定有视频画面,需要使用成员信息中的streamTracks来判断用户是否推流以及获取轨道号码等信息。 参数

engineChannel:onRemoteUserUpdate:()

- (void)engineChannel:(RTCEngineChannel *)channel onRemoteUserUpdate:(NSString *)userId 当前频道有成员数据更新回调 参数

engineChannel:onRemoteUserLeaveChannel:reason:()

- (void)engineChannel:(RTCEngineChannel *)channel onRemoteUserLeaveChannel:(NSString *)userId reason:(RTCLeaveReason)reason 用户离开频道回调,包括当前用户。 该回调与engineChannel:onRemoteUserJoinChannel:相对应。 参数

engineChannel:onRemoteStreamTrackChange:streamTrackModel:changeType:()

- (void)engineChannel:(RTCEngineChannel *)channel onRemoteStreamTrackChange:(NSString *)userId streamTrackModel:(RTCEngineStreamTrackModel *)streamTrackModel changeType:(RTCChangeType)changeType 当前频道有用户码流数据变更回调 参数

消息相关回调

engineChannel:onCustomMessage:action:userId:sessionId:nickname:()

- (void)engineChannel:(RTCEngineChannel *)channel onCustomMessage:(NSString *)content action:(NSString *)action userId:(nullable NSString *)userId sessionId:(nullable NSString *)sessionId nickname:(nullable NSString *)nickname 自定义消息回调 应用层业务功能通过服务触发操作事件,SDK 会通过这个回调通知您。 参数

音频相关回调

engineChannel:onAudioCapture:channels:stamp:dataSize:pcmData:()

- (void)engineChannel:(RTCEngineChannel *)channel onAudioCapture:(int)samplerate channels:(int)channels stamp:(unsigned int)stamp dataSize:(int)dataSize pcmData:(void *)pcmData 音频采集数据回调 SDK 采集到麦克风原始 PCM 数据后通过该回调抛出,业务层可用于本地录制、音频分析等场景。 注:该回调在音频采集线程中触发,请勿在回调中执行耗时操作,也不要持有 pcmData 指针,需要留用时请自行拷贝数据。 参数

engineChannel:onAudioCaptureResampled:channels:stamp:resampledData:()

- (void)engineChannel:(RTCEngineChannel *)channel onAudioCaptureResampled:(int)samplerate channels:(int)channels stamp:(unsigned int)stamp resampledData:(NSData *)resampledData 音频采集重采样数据回调 engineChannel:onAudioCapture:channels:stamp:dataSize:pcmData:() 的区别在于数据已按 SDK 内部采样率转换,并以 NSData 形式给出,业务层无需自行管理内存。 注:该回调同样在音频采集线程中触发,请勿在回调中执行耗时操作。 参数

engineChannel:onRemoteMemberAudioStatus:()

- (void)engineChannel:(RTCEngineChannel *)channel onRemoteMemberAudioStatus:(NSArray<RTCStreamAudioModel *> *)audioArray 远程成员音频状态回调 频道成员音频状态回调,包括:音频的分贝值、功率等信息,业务层可通过该回调统计音频数据进行语音激励操作。 参数

engineChannel:onServiceEnabledSpeak:()

- (void)engineChannel:(RTCEngineChannel *)channel onServiceEnabledSpeak:(BOOL)enabled 服务是否允许发言回调 参数

流媒体相关回调

engineChannelOnStreamMediaDidConnectSucceed:()

- (void)engineChannelOnStreamMediaDidConnectSucceed:(RTCEngineChannel *)channel 流媒体连接成功回调 该频道的流媒体初次连接成功后,SDK 会通过该接口通知您。 参数

engineChannel:onStreamChangedVendorName:()

- (void)engineChannel:(RTCEngineChannel *)channel onStreamChangedVendorName:(NSString *)vendorName 流媒体平台变化回调 当前频道使用的流媒体平台发生切换时,SDK 会通过该回调告知业务层当前生效的平台名称。 参数

engineChannel:onDownBitrateAdaptiveUserId:state:()

- (void)engineChannel:(RTCEngineChannel *)channel onDownBitrateAdaptiveUserId:(NSString *)userId state:(RTCDownBitrateAdaptiveState)state 下行码率自适应状态回调 参数

engineChannel:onUploadBitrateAdaptiveState:()

- (void)engineChannel:(RTCEngineChannel *)channel onUploadBitrateAdaptiveState:(RTCUploadBitrateAdaptiveState)state 上行码率自适应状态回调 参数

engineChannel:onDownLossLevelChangeState:()

- (void)engineChannel:(RTCEngineChannel *)channel onDownLossLevelChangeState:(RTCDownLossLevelState)state 下行平均丢包档位变化回调 参数

engineChannel:onDownLossRateAverage:()

- (void)engineChannel:(RTCEngineChannel *)channel onDownLossRateAverage:(CGFloat)average 下行平均丢包率回调 参数

engineChannel:onSendStreamModel:()

- (void)engineChannel:(RTCEngineChannel *)channel onSendStreamModel:(RTCStreamSendModel *)sendModel 流媒体发送状态数据回调 会在固定时间间隔收到该回调,描述当前数据发送状态延迟、丢包率等信息。 参数

engineChannel:onReceiveStreamModel:()

- (void)engineChannel:(RTCEngineChannel *)channel onReceiveStreamModel:(NSArray <RTCStreamReceiveModel *> *)receiveArray 流媒体接收状态数据回调 会在固定时间间隔收到该回调,描述当前数据接收状态延迟、丢包率等信息。 参数

engineChannel:onSendQualitySample:()

- (void)engineChannel:(RTCEngineChannel *)channel onSendQualitySample:(RTCStreamQualitySampleModel *)sample 服务端上行质量检测回调 Seastart SFU 26.4 起,由服务端通过 Signal DataChannel 下发,含 score/level/mos 等服务端独有指标,作为本地 engineChannel:onSendStreamModel: 的补充。 参数

engineChannel:onReceiveQualitySample:()

- (void)engineChannel:(RTCEngineChannel *)channel onReceiveQualitySample:(RTCStreamQualitySampleModel *)sample 服务端下行质量检测回调 Seastart SFU 26.4 起,由服务端通过 Signal DataChannel 下发,为整体下行的聚合样本,与 engineChannel:onReceiveStreamModel: 的 per-stream 维度互补。 参数

engineChannel:onReceiveStreamStatusChange:trackId:status:()

- (void)engineChannel:(RTCEngineChannel *)channel onReceiveStreamStatusChange:(NSString *)userId trackId:(RTCTrackIdentifierFlags)trackId status:(BOOL)status 流媒体接收远端流状态变更回调 订阅成员远程视频流后,如果持续一段时间没有收到该成员的视频流,会收到该回调。同时,接收视频流恢复后也会收到该回调。 参数

engineChannel:onReceiveRetweetStreamStatusChange:status:()

- (void)engineChannel:(RTCEngineChannel *)channel onReceiveRetweetStreamStatusChange:(NSString *)streamName status:(BOOL)status 流媒体接收转推流状态变更回调 订阅远端转推流后,如果持续一段时间没有收到该转推流的画面,会收到该回调。转推流不作为远端用户视频数据上报,其接收状态通过本回调单独通知。 参数

屏幕共享相关回调

engineChannel:onScreenRecordStatus:()

- (void)engineChannel:(RTCEngineChannel *)channel onScreenRecordStatus:(RTCScreenRecordStatus)status 屏幕共享状态回调 调用频道实例的publishScreenRecord:()接口执行开启屏幕共享操作后,SDK 会通过该回调通知宿主程序当前的屏幕共享状态。 参数