
# 事件回调（HWRtcEngine）
本章节介绍了iOS/Mac SDK的回调接口HWRtcEngineDelegate的详情。
表1事件回调说明 
| 接口                                                                                         | 描述                  |
|:---|:---|
| [onJoinSuccess]                                        | 成功加入房间回调            |
| [onJoinRoomFailure]                                       | 加入房间失败回调            |
| [onRejoinRoomSuccess]                                     | 重新加入房间成功回调          |
| [onLeaveRoom]                                          | 离开房间回调              |
| [onRemoteUserOnline]                                     | 用户加入房间回调            |
| [onRemoteUserOffline]                                   | 用户离开房间回调            |
| [onUserNameChangedNotify]                                | 本地用户昵称变化回调          |
| [onRemoteUserNameChangedNotify]                          | 远端用户昵称变化回调          |
| [onFirstRemoteVideoDecoded]                               | 引擎收到第一帧远端视频流并解码成功回调 |
| [onFirstRemoteVideoDecoded]                           | 引擎收到第一帧远端视频流并解码成功回调 |
| [onFirstRemoteAuxiliaryStreamDecoded]                  | 引擎收到第一帧远端辅流并解码成功回调  |
| [onFirstRemoteAuxiliaryStreamDecoded]                    | 引擎收到第一帧远端辅流并解码成功回调  |
| [onUserRoleChangedNotify]                                | 用户角色切换成功回调          |
| [onConnectionChangedNotify]                             | 连接状态改变回调            |
| [onError]                                               | 错误回调                |
| [onWarning]                                            | 警告回调                |
| [onAuthorizationExpired]                              | 签名过期回调              |
| [onDeviceStateChangedNotify]                            | 设备状态改变回调（仅macOS）    |
| [onAudioVolumeChanged]                                  | 音频音量改变回调（仅macOS）    |
| [onLocalVolumeChangedNotify]                            | 本地音频采集音量            |
| [onLocalAudioMutedStatusDetected]                        | 本地静音但检测到音频输入回调      |
| [onFirstLocalAudioFrameNotify]      | 本端用户音频首帧发送通知        |
| [onFirstLocalVideoFrameNotify] | 本端用户视频首帧发送通知        |
| [onAudioRouteChange]                                  | 音频路由改变回调（仅iOS）      |
| [onLogUploadResult]                                     | 日志上传结果回调            |
| [onLogUploadProgress]                                   | 日志上传进度回调            |
| [onRemoteAudioStateChange]                               | 远端用户音频流状态改变回调       |
| [onRemoteVideoStateChange]                                | 远端视频流状态改变           |
| [onUserVolumeStatsNotify]                                | 音频音量回调              |
| [onRenderExternalVideoFrame]                            | 渲染视频帧回调             |
| [onPlaybackExternalAudioFrame]                          | 渲染音频帧回调             |
| [onNetworkTestResult]                                  | 入会前网络检测状态回调         |
| [onNetworkTestQuality]                                  | 入会前网络检测质量状态回调       |
| [onVideoStatsNotify]                                     | 视频流详情，2s触发一次回调      |
| [onAudioStatsNotify]                                     | 音频流详情，2s触发一次回调      |
| [onAuxiliaryStreamStatsNotify]                         | 辅流流详情，2s触发一次回调      |
| [onUserAuxiliaryStreamAvailable]                       | 辅流状态回调              |
| [onAudioDeviceTestVolumeNotify]                       | 本地音频采集音量            |
| [onRenderSuccessNotify]                                  | 用户视频流渲染成功通知回调       |
| [onLocalAudioStateChangedNotify]                      | 本地音频流状态改变回调         |
| [onLocalVideoStateChangedNotify]                      | 本地视频流状态改变回调         |
| [onNetworkQualityNotify]                                 | 加入房间后的网络质量状态回调      |
| [onLocalVideoStatsNotify]                              | 本端视频统计回调            |
| [onRemoteVideoStatsNotify]                              | 远端视频统计回调            |
| [onLocalAudioStatsNotify]                             | 本端音频统计回调            |
| [onRemoteAudioStatsNotify]                             | 远端音频统计回调            |
| [onRemoteVideoResolutionChangedNotify]                 | 远端视频大小流改变回调         |
| [onStatsNotify]                                        | 当前会话统计回调            |
| [onAudioMixStateChangedNotify]                           | 混音音频文件状态改变回调        |
| [onAudioClipFinished]                                   | 音效文件播放结束回调          |
| [onSeiSendMsgSuccess]                                  | 发送音频SEI消息成功         |
| [onSeiRecvMsg]                                         | 收到用户的音频SEI消息        |
| [onStartPublishStream]                                | 开始旁路（RTMP）推流回调      |
| [onUpdateTransCoding]                                | 更新旁路（RTMP）推流消息      |
| [onStopPublishStream]                                  | 停止旁路（RTMP）推流消息      |
| [onStreamPublishStateChange]                           | RTMP推流状态回调          |
| [onTopActiveSpeaker]             | 当前音量最大的用户ID         |
| [onScreenShareStarted]                                  | 屏幕共享开启              |
| [onScreenShareStopped]                                    | 屏幕共享关闭              |
| [onAudioDeviceTestVolumeNotify]                      | 音频设备测试回调            |
| [onRemoteMicrophoneStateChanged]                       | 远端麦克风设备状态变更通知       |
| [onUserNetworkQualityNotify]                            | 加入房间后的用户级网络质量状态回调   |
| [onMultiRoomMediaRelayStateChanged]                    | 跨房状态回调              |
| [onMediaAddressNotify]                                 | 加入房间成功之后sfuip地址回调   |
   
 #### onJoinSuccess
```
-(void)onJoinSuccess:(NSString*)roomId userId:(NSString*)userId;
```
【**功能说明**】
成功加入房间，触发此回调。
【**回调参数** 】
- roomId：新加入的房间ID。
- userId：新加入房间的用户ID。
 
 #### onJoinRoomFailure
```
- (void)onJoinRoomFailure:(int)errorCode errorMsg:(NSString * _Nonnull)errorMsg;
```
【**功能说明**】
加入房间失败，触发此回调。
【**回调参数** 】
- errorCode：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
 
- errorMsg：错误信息描述。
 
 #### onRejoinRoomSuccess
```
- (void)onRejoinRoomSuccess:(NSString *)roomid userid:(NSString *)userid;
```
【**功能说明**】
重新加入房间回调。例如网络异常后重连成功加入房间触发。
【**回调参数** 】
- roomid：房间ID。
- userid：用户ID。
 
 #### onLeaveRoom
```
- (void)onLeaveRoom:(HWRtcLeaveReason)leaveReason statsInfo:(HWRtcStatsInfo *)statsInfo;
```
【**功能说明**】
离开房间，触发此回调。
【**回调参数** 】
- leaveReason：离开的房间原因，具体请参见[HWRtcLeaveReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1020461223716)。
- statsInfo：卡顿统计信息，具体请参见[HWRtcStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section793512313340)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
APP调用[leaveRoom](https://support.huaweicloud.com/csdk-rtc/rtc_05_0055.html#rtc_05_0055__section209254523595)接口时，会返回HWRtcLeaveReasonUserLeaveRoom，APP可以通过以下任一方式回退到登录界面。
- APP在调用leaveRoom接口时退到登录界面，或者在收到到onLeaveRoom回调，且回调消息不等于HWRtcLeaveReasonUserLeaveRoom时（防止重复操作），退到登录界面。
- APP只在收到onLeaveRoom消息时退到登录界面。
 
 #### onRemoteUserOnline
```
- (void)onRemoteUserOnline:(NSString*)roomId userId:(NSString*)userId userName:(NSString*)userName;
```
【**功能说明**】
远端用户加入房间成功，触发此回调。该回调提示有远端用户加入了房间，并返回新加入用户信息。
【**回调参数**】
- roomId：房间ID。
- userId：远端用户ID。
- userName：远端用户昵称。
 
 #### onRemoteUserOffline
```
- (void)onRemoteUserOffline:(NSString*)roomId userId:(NSString*)userId reason:(NSInteger)reason;
```
【**功能说明**】
远端用户离开当前房间，触发此回调。
本端用户离开当前房间，会回调当前房间所有用户offline。
【**回调参数** 】
- roomId：当前房间的房间ID。
- userId：离开房间的远端用户ID。
- reason：远端用户离线原因，预留参数。
 
 #### onUserNameChangedNotify
```
-(void)onUserNameChangedNotify:(NSString * _Nonnull)oldUserName newUserName:(NSString * _Nonnull)newUserName;
```
【**功能说明**】
本端用户昵称变化，触发此回调。
【**回调参数**】
- oldUserName：变更前的昵称。
- newUserName：变更后的昵称。
 
 #### onRemoteUserNameChangedNotify
```
-(void)onRemoteUserNameChangedNotify:(NSString * _Nonnull)roomId userId:(NSString * _Nonnull)userId userName:(NSString * _Nonnull)userName;
```
【**功能说明**】
远端用户昵称变化，触发此回调。
【**回调参数**】
- roomId：房间ID。
- userId：用户ID。
- userName：昵称。
 
 #### onFirstRemoteVideoDecoded
```
- (void)onFirstRemoteVideoDecoded:(NSString*)roomId userId:(NSString*)userId width:(int)width height:(int)height;
```
【**功能说明**】
引擎收到第一帧远端视频流并解码成功回调。
【**回调参数** 】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽度。
- height：视频流高度。
 
 #### onFirstRemoteVideoDecoded
```
- (void)onFirstRemoteVideoDecoded:(NSString*)roomId userId:(NSString*)userId width:(int)width height:(int)height elapsed:(NSUInteger)elapsed;
```
【**功能说明**】
引擎收到第一帧远端视频流并解码成功回调。
【**回调参数** 】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽度。
- height：视频流高度。
- elapsed：本端订阅远端用户视频到首帧解码后消耗的时间，单位ms。
 
 #### onFirstRemoteAuxiliaryStreamDecoded
```
- (void)onFirstRemoteAuxiliaryStreamDecoded:(NSString*)roomId userId:(NSString*)userId width:(int)width height:(int)height;
```
【**功能说明**】
引擎收到第一帧远端视频流并解码成功回调。
【**回调参数** 】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽度。
- height：视频流高度。
 
 #### onFirstRemoteAuxiliaryStreamDecoded
```
- (void)onFirstRemoteAuxiliaryStreamDecoded:(NSString*)roomId userId:(NSString*)userId width:(int)width height:(int)height elapsed:(NSUInteger)elapsed;
```
【**功能说明**】
引擎收到第一帧远端视频流并解码成功回调。
【**回调参数** 】
- roomId：视频流对应的房间ID。
- userId：视频流对应的用户ID。
- width：视频流宽度。
- height：视频流高度。
- elapsed：本端订阅远端用户视频到首帧解码后消耗时间，单位ms。
 
 #### onUserRoleChangedNotify
```
- (void)onUserRoleChangedNotify:(HWRtcRole)oldRole newRole:(HWRtcRole)newRole;
```
【**功能说明**】
用户房间内角色切换成功，触发此回调。
【**回调参数** 】
- oldRole：切换前的角色，具体请参见[HWRtcRole](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section181001014124014)。
- newRole：切换成功后的角色，具体请参见[HWRtcRole](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section181001014124014)。
 
 #### onConnectionChangedNotify
```
- (void)onConnectionChangedNotify:(HWRtcConnStateType)state reason:(HWRtcConnChangeReason)reason description:(NSString*)description;
```
【**功能说明**】
网络连接状态发生变化，触发此回调。
【**回调参数** 】
- state：网络连接状态，具体请参见[HWRtcConnStateType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1263474584118)。
- reason：网络连接状态发生变化原因，具体请参见[HWRtcConnChangeReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section83735472204)。
- description：错误原因描述。
 
 #### onError
```
- (void)onError:(NSString*)errorCode errorMsg:(NSString*)errorMsg;
```
【**功能说明**】
发生错误，触发此回调。返回客户端错误码或者服务端错误码。
【**回调参数** 】
- errorCode：错误码，具体请参见[HRTCErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
- errorMsg：错误信息描述。
 
 #### onWarning
```
- (void)onWarning:(int)warningCode warningMsg:(NSString * _Nonnull)warningMsg;
```
【**功能说明**】
发生错误，触发此回调。返回客户端错误码或者服务端错误码。
【**回调参数** 】
- warningCode：警告码。
- warningMsg：警告信息描述。
 
 #### onAuthorizationExpired
```
- (void)onAuthorizationExpired;
```
【**功能说明**】
鉴权签名过期回调，需要app调用[renewAuthorization](https://support.huaweicloud.com/csdk-rtc/rtc_05_0055.html#rtc_05_0055__section592115527594)更新签名。
 #### onDeviceStateChangedNotify
```
- (void)onDeviceStateChangedNotify:(NSString*)deviceId deviceType:(HWRtcDeviceType)deviceType deviceState:(HWRtcDeviceState)deviceState;
```
【**功能说明**】
设备状态发生变化，触发此回调。
【**回调参数** 】
- deviceId：设备ID。
- deviceType：系统设备类型，具体请参见[HWRtcDeviceType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section193131144412)。
- deviceState：系统设备状态，具体请参见[HWRtcDeviceState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1393782794118)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
仅支持macOS。
 #### onAudioVolumeChanged
```
- (void)onAudioVolumeChanged:(HWRtcDeviceType)deviceType volume:(unsigned int)volume;
```
【**功能说明**】
音频设备音量发生变化，触发此回调。
【**回调参数** 】
- deviceType：系统设备类型，具体请参见[HWRtcDeviceType](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section193131144412)。
- volume：音量。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
仅支持macOS。
 #### onLocalVolumeChangedNotify
```
- (void)onLocalVolumeChangedNotify:(int)volume muted:(int)muted;
```
【**功能说明**】
本地音频采集音量。
【**回调参数**】
- volume：音量。
- muted：0表示开启本地音频发送，1表示关闭本地音频发送。
 
 #### onLocalAudioMutedStatusDetected
```
- (void)onLocalAudioMutedStatusDetected;
```
【**功能说明**】
本地静音但检测到音频输入回调。
【**回调参数**】
无
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
通过[setVolumeNotifyInterval](https://support.huaweicloud.com/csdk-rtc/rtc_05_0056.html#rtc_05_0056__section37939461531)开启并设置回调周期，本端禁音后检测到麦克风有输入后定时上报。上报频率和[setVolumeNotifyInterval](https://support.huaweicloud.com/csdk-rtc/rtc_05_0056.html#rtc_05_0056__section37939461531)的参数大小有关，参考值建议设置成200。
 #### onFirstLocalAudioFrameNotify
```
- (void)onFirstLocalAudioFrameNotify: (NSUInteger)elapsed;
```
【**功能说明**】
本地音频首帧发送回调。
【**回调参数**】
elapsed：从入会到本地音频首帧发送所用的时间，单位ms。
 #### onFirstLocalVideoFrameNotify
```
- (void)onFirstLocalVideoFrameNotify:(NSUInteger)elapsed;
```
【**功能说明**】
本地视频首帧渲染回调。
【**回调参数**】
elapsed：从开始采集到本地视频首帧渲染所用的时间，单位ms。
 #### onAudioRouteChange
```
- (void)onAudioRouteChange:(HWRtcAudioRoute)audioRoute;
```
【**功能说明**】
音频路由发生改变，触发此回调。如房间内插拔耳机触发此回调。
【**回调参数**】
audioRoute：音频路由类型，具体请参见[HWRtcAudioRoute](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section682843265813)。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
仅支持iOS。
 #### onLogUploadResult
```
- (void)onLogUploadResult:(int)result;
```
【**功能说明**】
日志上传结果回调。
【**回调参数**】
result：日志上传结果。
- 0：上传成功。
- 1：上传失败。
 
 #### onLogUploadProgress
```
- (void)onLogUploadProgress:(int)progress;
```
【**功能说明**】
日志上传进度回调。
【**回调参数**】
progress：日志上传进度，取值范围0-100。
 #### onRemoteAudioStateChange
```
- (void)onRemoteAudioStateChange:(NSString * _Nonnull)roomid userid:(NSString * _Nonnull)userid state:(HWRtcRemoteAudioState)state reason:(HWRtcRemoteAudioStateReason)reason;
```
【**功能说明**】
远端用户音频流状态发生改变，会触发此回调。
【**回调参数** 】
- roomid：房间ID。
- userid：远端用户ID。

- state：远端音频流状态，具体请参见[HWRtcRemoteAudioState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section65941497369)。
- reason：远端音频流状态改变的原因，具体请参见[HWRtcRemoteAudioStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section98555542368)。
 
 #### onRemoteVideoStateChange
```
- (void)onRemoteVideoStateChange:(NSString * _Nonnull)roomid userid:(NSString * _Nonnull)userid state:(HWRtcRemoteVideoState)state reason:(HWRtcRemoteVideoStateReason)reason;
```
【**功能说明**】
远端用户视频流状态发生改变，会触发此回调。
【**回调参数** 】
- roomid：房间ID。
- userid ：远端用户ID。
- state：远端视频流状态，具体请参见[HWRtcRemoteVideoState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section34581017377)。
- reason：远端视频流状态改变的原因，具体请参见[HWRtcRemoteVideoStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section102046773713)。
 
 #### onUserVolumeStatsNotify
```
- (void)onUserVolumeStatsNotify:(NSArray <HWRtcMediaUsersVolumeInfo *> *_Nullable)usersVolumeArray  userNumber:(NSUInteger)userNumber totalVolume:(NSUInteger)totalVolume;
```
【**功能说明**】
用户音量状态回调。通过[setVolumeNotifyInterval](https://support.huaweicloud.com/csdk-rtc/rtc_05_0056.html#rtc_05_0056__section37939461531)开启并设置回调周期，定时上报。
【**回调参数** 】
- usersVolumeArray：回调发言人音量信息，具体请参见[HWRtcMediaUsersVolumeInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1240729145117)。
- userNumber：上报的用户人数，最多上报4人，包含本地用户。
- totalVolume：总音量。
 
 #### onRenderExternalVideoFrame
```
- (void)onRenderExternalVideoFrame:(NSString *_Nonnull)roomid meidaDirection:(HWRtcMediaDirection)meidaDirection videoFrame:(HWRtcVideoFrame * _Nonnull)videoFrame;
```
【**功能说明**】
渲染视频帧回调。需要调用[setExternalVideoFrameOutputWithFormat](https://support.huaweicloud.com/csdk-rtc/rtc_05_0063.html#rtc_05_0063__section139021359171216)接口开启视频自渲染，从而触发该回调。
【**回调参数** 】
- roomid：房间ID。
- meidaDirection：数据源（本地/远端数据），媒体方向，具体请参见[HWRTCMediaDirection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1438103219263)。
- videoFrame：视频帧详情，具体请参见[HWRtcVideoFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section199816620273)。
 
 #### onPlaybackExternalAudioFrame
```
- (void)onPlaybackExternalAudioFrame:(NSString *_Nonnull)roomid meidaDirection:(HWRtcMediaDirection)meidaDirection audioFrame:(HWRtcAudioFrame * _Nonnull)audioFrame;
```
【**功能说明**】
音频自渲染回调。需要调用setExternalMediaFrameOutput接口开启音频自渲染，从而触发该回调。
【**回调参数** 】
- roomid ：房间ID。
- meidaDirection：数据源（本地/远端数据），具体请参见[HWRTCMediaDirection](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1438103219263)。
- audioFrame：音频帧详情，具体请参见[HWRtcAudioFrame](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section172416202714)。
 
 #### onNetworkTestResult
```
- (void)onNetworkTestResult:(HWRtcNetworkTestResult * _Nonnull)result;
```
【**功能说明**】
加房间前网络探测结果回调。
【**回调参数**】
HWRtcNetworkTestResult：回调状态主要包括测试成功与否、上行和下行的网络带宽、丢包、延时和抖动，具体请参见[HWRtcNetworkTestResult](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section133751818134413)。
 #### onNetworkTestQuality
```
- (void)onNetworkTestQuality:(int)level;
```
【**功能说明**】
加房间前网络探测回调。
【**回调参数**】
level：检测网络质量 ，具体请参见[HWRtcNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section646614145916)。
 #### onVideoStatsNotify
```
- (void)onVideoStatsNotify:(NSArray <HWRtcVideoStatsInfo *> * _Nullable)videoStatsArray remoteVideoInfo:(NSArray <HWRtcVideoStatsInfo *>* _Nullable)remoteVideoStatsInfos;
```
【**功能说明**】
视频流详情，2s触发一次回调。
只有本地一个用户入会时，不回调该方法。
【**回调参数** 】
- videoStatsArray：本地视频发流详情，具体请参见[HWRtcVideoStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1644823716312)。
- remoteVideoStatsInfo：远端视频收流详情，具体请参见[HWRtcVideoStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1644823716312)。
 
 #### onAudioStatsNotify
```
- (void)onAudioStatsNotify:(NSArray <HWRtcAudioStatsInfo *> * _Nullable)audioStatsArray remoteAudioInfo:(NSArray <HWRtcAudioStatsInfo *> * _Nullable)remoteAudioStatsInfos;
```
【**功能说明**】
音频流详情，2s触发一次回调。
【**回调参数**】
- audioStatsArray：本地音频发流详情，具体请参见[HWRtcAudioStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section16303932153110)。
- remoteAudioStatsInfos：远端音频收流详情，具体请参见[HWRtcAudioStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section16303932153110)。
 
 #### onAuxiliaryStreamStatsNotify
```
- (void)onAuxiliaryStreamStatsNotify:(NSArray <HWRtcVideoStatsInfo *> * _Nullable)subStreamStatsArray remoteVideoInfo:(NSArray <HWRtcVideoStatsInfo *> * _Nullable)remoteVideoStatsInfos;
```
【**功能说明**】
辅流详情，2s触发一次回调。
【**回调参数**】
- subStreamStatsArray：本地辅流发流详情，具体请参见[HWRtcVideoStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1644823716312)。
- remoteVideoStatsInfos：远端辅流收流详情，具体请参见[HWRtcVideoStatsInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1644823716312)。
 
 #### onUserAuxiliaryStreamAvailable
```
- (void)onUserAuxiliaryStreamAvailable:(NSString * _Nonnull)roomId userId:(NSString * _Nonnull)userId isAvailable:(BOOL)isAvailable;
```
【**功能说明**】
辅流状态回调。
【**回调参数**】
- roomId：房间ID。
- userId：远端用户ID。
- isAvailable：YES表示辅流推送中，NO表示辅流停止推送。
 
 #### onAudioDeviceTestVolumeNotify
```
- (void)onAudioDeviceTestVolumeNotify:(HWRtcAudioDeviceTestVolumeNotify * _Nonnull)result;
```
【**功能说明**】
本地音频采集音量回调。
【**回调参数**】
result：本地音频采集音量结果， 具体请参见[HWRtcAudioDeviceTestVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section34920424409)。
 #### onRenderSuccessNotify
```
- (void)onRenderSuccessNotify:(NSString *_Nonnull)userid isAux:(NSUInteger)isAux;
```
【**功能说明**】
用户视频流渲染成功通知回调。首帧渲染成功、分辨率变化或视频流中断后恢复触发。
【**回调参数**】
- userId：用户ID。
- isAux：YES表示是辅流，NO表示不是辅流。
 
 #### onLocalAudioStateChangedNotify
```
-(void)onLocalAudioStateChangedNotify:(HWRtcLocalAudioState)state
                         reason:(HWRtcLocalAudioStateReason)reason;
```
【**功能说明**】
本地音频流状态变化回调。
【**回调参数**】
- state：本地音频流状态。具体请参见 [HWRtcLocalAudioState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1981125122213)。
- reason：本地音频流状态变化原因。具体请参见 [HWRtcLocalAudioStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1390013414251)。
 
 #### onLocalVideoStateChangedNotify
```
-(void)onLocalVideoStateChangedNotify:(HWRtcLocalVideoState)state
                         reason:(HWRtcLocalVideoStateReason)reason;
```
【**功能说明**】
本地视频流状态变化回调。
【**回调参数**】
- state：本地视频流状态。具体请参见[HWRtcLocalVideoState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section3461035132817)。
- reason：本地视频流状态变化原因。具体请参见[HWRtcLocalVideoStateReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section13470354285)。
 
 #### onNetworkQualityNotify
```
- (void)onNetworkQualityNotify:(NSArray <HWRtcQualityInfo *> * _Nullable)upStreamQualityArray
       downStreamQualityInfo:(NSArray <HWRtcQualityInfo *> * _Nullable)downStreamQualityArray;
```
【**功能说明**】
房间内客户端基于流级别的网络质量实时上报，默认开启，每2s上报一次，有数据流时才会回调，音频流、视频流分开回调。
【**回调参数**】
- upStreamQualityArray：上行网络质量状态。具体请参见[HWRtcQualityInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1566472512320)。
- downStreamQualityArray：下行网络质量状态。具体请参见[HWRtcQualityInfo](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1566472512320)。
 
 #### onLocalVideoStatsNotify
```
- (void)onLocalVideoStatsNotify:(NSArray <HWRtcLocalVideoStats *> * _Nullable)localVideoStatsArray;
```
【**功能说明**】
本端视频流详情，2s触发一次回调。
【**回调参数**】
localVideoStatsArray：本地视频发流详情参数，具体请参见[HWRtcLocalVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section2532826205018)。
 #### onRemoteVideoStatsNotify
```
- (void)onRemoteVideoStatsNotify:(NSArray <HWRtcRemoteVideoStats *> * _Nullable)remoteVideoStatsArray;
```
【**功能说明**】
远端视频流详情，2s触发一次回调。
【**回调参数**】
remoteVideoStatsArray：远端视频收流详情参数，具体请参见[HWRtcRemoteVideoStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1994111423574)。
 #### onLocalAudioStatsNotify
```
- (void)onLocalAudioStatsNotify:(NSArray <HWRtcLocalAudioStats *> * _Nullable)localAudioStatsArray;
```
【**功能说明**】
本端音频流详情，2s触发一次回调。
【**回调参数**】
localAudioStatsArray：本地音频发流详情，具体请参见[HWRtcLocalAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section39955201710)。
 #### onRemoteAudioStatsNotify
```
- (void)onRemoteAudioStatsNotify:(NSArray <HWRtcRemoteAudioStats *> * _Nullable)remoteAudioStatsArray;
```
【**功能说明**】
远端音频流详情，2s触发一次回调。
【**回调参数**】
remoteAudioStatsArray：远端音频收流详情，具体请参见[HWRtcRemoteAudioStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section89674306213)。
 #### onRemoteVideoResolutionChangedNotify
```
- (void)onRemoteVideoResolutionChangedNotify:(NSString *_Nullable)userId width:(NSInteger)width height:(NSInteger)height;
```
【**功能说明**】
远端视频大小改变回调。
【**回调参数**】
- userId：用户ID。
- width：视频流宽度。
- height：视频流高度。
 
 #### onStatsNotify
```
- (void)onStatsNotify:(NSArray <HRTCOnStats*> * _Nullable)rtcStatsArray;
```
【**功能说明**】
当前会话统计回调。
**回调参数**
hrtcOnStats：会话统计信息，具体请参见[HRTCOnStats](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section1852195962619)。
 #### onAudioMixStateChangedNotify
```
- (void)onAudioMixStateChangedNotify:(HWRtcAudioFileState)state reason:(HWRtcAudioFileReason)reason value:(NSUInteger)value;
```
【**功能说明**】
混音音频文件播放状态改变回调。
**回调参数**
- state：音频文件播放状态，具体请参见 [HWRtcAudioFileState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section84272774717)
- reason：音频文件播放状态变化原因，具体请参见 [HWRtcAudioFileReason](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section18807173319112)
- value：state为HWRtcAudioFileOpenCompleted表示音频文件的时长，单位ms；state为HWRtcAudioFilePositionUpdate表示当前播放的位置，单位ms。其他情况下，value值无意义。
 
 #### onAudioClipFinished
```
- (void)onAudioClipFinished:(NSInteger)soundId;
```
【**功能说明**】
音效文件播放结束回调。
**回调参数**
soundId：音效ID，取值\>= 0。
 #### onSeiSendMsgSuccess
```
- (void)onSeiSendMsgSuccess:(NSString * _Nonnull)message;
```
【**功能说明**】
发送音频SEI消息成功。
**回调参数**
message：本人发送成功的消息内容。
 #### onSeiRecvMsg
```
- (void)onSeiRecvMsg:(NSString * _Nonnull)userId message:(NSString * _Nonnull)message
```
【**功能说明**】
收到userId用户的音频SEI消息。
**回调参数**
- userId：用户uid。
- message：用户发送的消息。
 
 #### onStartPublishStream
```
- (void)onStartPublishStream:(NSInteger)code taskId:(NSString *_Nonnull)taskId;
```
【**功能说明**】
开始旁路（RTMP）推流回调。
【**回调参数**】
- code：错误码，成功为0，失败请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
- taskId：任务Id。
 
 #### onUpdateTransCoding
```
- (void)onUpdateTransCoding:(NSInteger)code taskId:(NSString *_Nonnull)taskId;
```
【**功能说明**】
更新旁路（RTMP）推流消息。
【**回调参数**】
- code：错误码，成功为0，失败请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
- taskId：任务Id。
 
 #### onStopPublishStream
```
- (void)onStopPublishStream:(NSInteger)code taskId:(NSString *_Nonnull)taskId;
```
【**功能说明**】
停止旁路（RTMP）推流消息。
【**回调参数**】
- code：错误码，成功为0，失败请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
- taskId：任务Id。
 
 #### onStreamPublishStateChange
```
- (void)onStreamPublishStateChange:(NSInteger)code taskId:(NSString *_Nonnull)taskId urlStatus:(NSArray <HRTCRtmpUrlInfoModel *> * _Nullable)urlList;
```
【**功能说明**】
RTMP推流状态回调。
【**回调参数**】
- code：错误码，成功为0，失败请参见[HWRtcErrorCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0080.html)。
- taskId：任务Id。
- urlList：推流的url状态，具体请参见[HRTCRtmpUrlInfoModel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section627511615463)。
 
 #### onTopActiveSpeaker
```
- (void)onTopActiveSpeaker:(NSString *_Nonnull)userId noStream:(BOOL)noStream;
```
【**功能说明**】
声控画面的用户ID变化时，触发此回调。该回调主要用于0号会场场景。
【**回调参数**】
userId：返回当前声控画面的用户ID。
noStream：该用户是否有视频流。
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
0号会场模式下，SDK会持续监测（根据一定时间内用户音量大小）当前最活跃的用户，如果最活跃用户发生变化，则触发此回调并上报当前最活跃的用户userId。
 #### onScreenShareStarted
```
- (void)onScreenShareStarted;
```
【**功能说明**】
当前状态是系统录屏开启成功回调。只有系统屏幕录制开启成功，才会开启辅流共享。
【**回调参数**】
无
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
只有iPhone才会生效。
 #### onScreenShareStopped
```
- (void)onScreenShareStopped:(int)reason;
```
【**功能说明**】
当前状态是系统录屏完成回调。主动调用stopScreen，不会触发该回调。只有主动关闭系统的屏幕录制，才会回调。当前状态回调之后，不需要再调用stopScreen停止辅流。
【**回调参数**】
无
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 只有iPhone才会生效。
- reason参数目前只返回0。
 
 #### onAudioDeviceTestVolumeNotify
```
- (void)onAudioDeviceTestVolumeNotify:(HWRtcAudioDeviceTestVolumeNotify * _Nonnull)result;
```
【**功能说明**】
音频设备测试回调。
【**回调参数**】
result：回调数据，具体请参见[HWRtcAudioDeviceTestVolumeNotify](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section17659143211291)。
 #### onRemoteMicrophoneStateChanged
```
- (void)onRemoteMicrophoneStateChanged:(NSString * _Nonnull)userId state:(HWRtcRemoteMicState)state;
```
【**功能说明**】
远端用户麦克风状态变更通知。
【**回调参数**】
userId：远端用户userId。
state：麦克风设备状态，具体请参见[HWRtcRemoteMicState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section24861113131417)。
 #### onUserNetworkQualityNotify
```
- (void)onUserNetworkQualityNotify:(NSString *_Nullable)roomId userId:(NSString *_Nullable)userId 
       txQuality:(HWRtcNetworkQualityLevel)txQuality rxQuality:(HWRtcNetworkQualityLevel)rxQuality;
```
【**功能说明**】
支持用户上报各自与近端SFU间的上下行网络质量，基于用户级，使本地用户能获取同房间内远端用户与其近端SFU间的网络质量。CMD广播时为房间级，将广播给订阅了此主播流的用户或者此主播被选为TOPN用户且观众订阅了该TOPN用户。
【**回调参数**】
- roomId：用户所在房间号。
- userId: 上报的用户id，0为本地，非0为远端。
- txQuality：该用户的上行网络质量，具体请参见[HWRtcNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section646614145916)。
- rxQuality：该用户的下行网络质量，具体请参见[HWRtcNetworkQualityLevel](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section646614145916)。
 
![](https://support.huaweicloud.com/csdk-rtc/public_sys-resources/caution_3.0-zh-cn.png)
- 此接口不支持跨房场景、WebRTC场景。
- 不支持RTSA。
 
 #### onMultiRoomMediaRelayStateChanged
```
- (void)onMultiRoomMediaRelayStateChangedWithRoomId:(NSString *)roomId state:(HWRtcMultiRoomMediaRelayState)state code:(HWRtcMultiRoomMediaRelayStateCode)code
```
【**功能说明**】
跨房状态回调。
**【回调参数**】
roomId：跨房房间号。
state：状态类型，具体请参见[HRTCMultiRoomMediaRelayState](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section817464593514)。
code：状态的具体原因，具体请参见[HRTCMultiRoomMediaRelayStateCode](https://support.huaweicloud.com/csdk-rtc/rtc_05_0082.html#rtc_05_0082__section12745550193512)。
 #### onMediaAddressNotify
```
- (void)onMediaAddressNotify:(NSString * _Nonnull)mediaIpv4 mediaIpv6:
```
【**功能说明**】
加入房间成功之后，回调SFU的ipv4和ipv6地址。
**【回调参数**】
mediaIpv4：sfu ipv4地址。
mediaIpv6：sfu ipv6地址。
