AliRTCSdk v2.5
阿里云实时音视频 SDK,覆盖在全球范围内的实时音视频开发平台,为您提供高可用、高品质、超低延时的音视频通信服务。
AliRtcEngineDelegate

protocol  <AliRtcEngineDelegate>
 

详细描述


类说明

◆ AliRtcEngineDelegate-p

protocol AliRtcEngineDelegate-p

继承自 <NSObjectNSObject> , 以及 <NSObjectNSObject> .

AliRtcEngine , 以及 AliRtcEngine 继承.

构造函数

(void) - onJoinChannelResult:channel:elapsed:
 
(void) - onJoinChannelResult:channel:userId:elapsed:
 
(void) - onLeaveChannelResult:stats:
 
(void) - onAudioPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onVideoPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onScreenSharePublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onRemoteUserOnLineNotify:elapsed:
 
(void) - onRemoteUserOffLineNotify:offlineReason:
 
(void) - onRemoteTrackAvailableNotify:audioTrack:videoTrack:
 
(void) - onAudioSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onVideoSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onScreenShareSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onSubscribeStreamTypeChanged:oldStreamType:newStreamType:elapseSinceLastState:channel:
 
(void) - onUpdateRoleNotifyWithOldRole:newRole:
 
(void) - onNetworkQualityChanged:upNetworkQuality:downNetworkQuality:
 
(void) - onPublishStaticVideoFrame:isStaticFrame:
 
(void) - onConnectionLost
 
(void) - onTryToReconnect
 
(void) - onConnectionRecovery
 
(void) - onConnectionStatusChange:reason:
 
(void) - onBye:
 
(void) - onOccurWarning:message:
 
(void) - onOccurError:message:
 
(void) - onPerformanceLow
 
(void) - onPerformanceRecovery
 
(void) - onFirstAudioPacketSentWithTimecost:
 
(void) - onFirstVideoPacketSentWithVideoTrack:timeCost:
 
(void) - onFirstAudioPacketReceivedWithUid:timeCost:
 
(void) - onFirstVideoPacketReceivedWithUid:videoTrack:timeCost:
 
(void) - onFirstRemoteAudioDecodedWithUid:elapsed:
 
(void) - onFirstRemoteVideoFrameDrawn:videoTrack:width:height:elapsed:
 
(void) - onFirstLocalVideoFrameDrawn:height:elapsed:
 
(void) - onAudioSampleCallback:audioSample:
 
(void) - onPlaybackAudioFrameBeforeMixing:audioSample:
 
(void) - onAudioVolumeCallback:totalVolume:
 
(void) - onActiveSpeaker:
 
(BOOL) - onGetIfUserFetchObserverData
 
(AliRtcVideoFormat- onGetVideoFormatPreference
 
(AliRtcVideoObserAlignment- onGetVideoAlignment
 
(NSInteger) - onGetVideoObservedFramePosition
 
(BOOL) - onGetObserverDataMirrorApplied
 
(BOOL) - onGetSmoothRenderingEnabled
 
(BOOL) - onCaptureVideoSample:videoSample:
 
(BOOL) - onPreEncodeVideoSample:videoSample:
 
(BOOL) - onRemoteVideoSample:videoSource:videoSample:
 
(void) - onUserAudioMuted:audioMuted:
 
(void) - onUserVideoMuted:videoMuted:
 
(void) - onUserVideoEnabled:videoEnabled:
 
(void) - onUserAudioInterruptedBegin:
 
(void) - onUserAudioInterruptedEnded:
 
(void) - onUserWillResignActive:
 
(void) - onUserWillBecomeActive:
 
(void) - onTextureCreate:
 
(int) - onTextureUpdate:width:height:videoSample:
 
(void) - onTextureDestory
 
(void) - onAudioPlayingStateChanged:errorCode:
 
(void) - onRemoteAudioAccompanyStarted:
 
(void) - onRemoteAudioAccompanyFinished:
 
(void) - onAudioEffectFinished:
 
(void) - onAuthInfoWillExpire
 
(void) - onAuthInfoExpired
 
(void) - onLastmileDetectResultWithQuality:
 
(void) - onVideoResolutionChanged:videoTrack:width:height:
 
(void) - onMediaRecordEvent:filePath:
 
(void) - onRtcStats:
 
(void) - onRtcLocalVideoStats:
 
(void) - onRtcRemoteVideoStats:
 
(void) - onRtcLocalAudioStats:
 
(void) - onRtcRemoteAudioStats:
 
(void) - onMediaExtensionMsgReceived:message:
 
(void) - onDownlinkMessageNotify:
 
(void) - onUplinkMessageResponse:
 
(void) - onAudioRouteChanged:
 
(void) - onSnapshotComplete:videoTrack:image:success:
 
(void) - onPublishLiveStreamStateChanged:state:errCode:
 
(void) - onPublishTaskStateChanged:state:
 
(void) - onChannelRelayStateChanged:code:message:
 
(void) - onChannelRelayEvent:
 
(void) - onRemoteVideoChanged:trackType:state:reason:
 
(void) - onRequestVideoExternalEncoderParameter:parameter:
 
(void) - onRequestVideoExternalEncoderFrame:frameType:
 
(void) - onJoinChannelResult:channel:elapsed:
 
(void) - onJoinChannelResult:channel:userId:elapsed:
 
(void) - onLeaveChannelResult:stats:
 
(void) - onAudioPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onVideoPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onScreenSharePublishStateChanged:newState:elapseSinceLastState:channel:
 
(void) - onScreenSharePublishStateChangedWithInfo:newState:elapseSinceLastState:channel:info:
 
(void) - onRemoteUserOnLineNotify:elapsed:
 
(void) - onRemoteUserOffLineNotify:offlineReason:
 
(void) - onRemoteTrackAvailableNotify:audioTrack:videoTrack:
 
(void) - onAudioSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onVideoSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onScreenShareSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel:
 
(void) - onSubscribeStreamTypeChanged:oldStreamType:newStreamType:elapseSinceLastState:channel:
 
(void) - onUpdateRoleNotifyWithOldRole:newRole:
 
(void) - onNetworkQualityChanged:upNetworkQuality:downNetworkQuality:
 
(void) - onPublishStaticVideoFrame:isStaticFrame:
 
(void) - onConnectionLost
 
(void) - onTryToReconnect
 
(void) - onConnectionRecovery
 
(void) - onConnectionStatusChange:reason:
 
(void) - onBye:
 
(void) - onOccurWarning:message:
 
(void) - onOccurError:message:
 
(void) - onPerformanceLow
 
(void) - onPerformanceRecovery
 
(void) - onFirstAudioPacketSentWithTimecost:
 
(void) - onFirstVideoPacketSentWithVideoTrack:timeCost:
 
(void) - onFirstAudioPacketReceivedWithUid:timeCost:
 
(void) - onFirstVideoPacketReceivedWithUid:videoTrack:timeCost:
 
(void) - onFirstRemoteAudioDecodedWithUid:elapsed:
 
(void) - onFirstRemoteVideoFrameDrawn:videoTrack:width:height:elapsed:
 
(void) - onFirstLocalVideoFrameDrawn:height:elapsed:
 
(void) - onAudioVolumeCallback:totalVolume:
 
(void) - onActiveSpeaker:
 
(void) - onAudioSampleCallback:audioSample:
 
(void) - onPlaybackAudioFrameBeforeMixing:audioSample:
 
(void) - onAudioDeviceRecordLevel:
 
(void) - onAudioDevicePlayoutLevel:
 
(void) - onAudioDevicePlayoutEnd
 
(void) - onAudioDeviceStateChanged:deviceType:deviceState:
 
(void) - onVideoDeviceStateChanged:deviceType:deviceState:
 
(void) - onVideoResolutionChanged:videoTrack:width:height:
 
(void) - onLastmileDetectResultWithQuality:
 
(BOOL) - onGetIfUserFetchObserverData
 
(AliRtcVideoFormat- onGetVideoFormatPreference
 
(AliRtcVideoObserAlignment- onGetVideoAlignment
 
(NSInteger) - onGetVideoObservedFramePosition
 
(BOOL) - onGetObserverDataMirrorApplied
 
(BOOL) - onGetSmoothRenderingEnabled
 
(BOOL) - onCaptureVideoSample:videoSample:
 
(BOOL) - onPreEncodeVideoSample:videoSample:
 
(BOOL) - onRemoteVideoSample:videoSource:videoSample:
 
(void) - onMediaRecordEvent:filePath:
 
(void) - onRtcStats:
 
(void) - onRtcLocalVideoStats:
 
(void) - onRtcRemoteVideoStats:
 
(void) - onRtcLocalAudioStats:
 
(void) - onRtcRemoteAudioStats:
 
(void) - onMediaExtensionMsgReceived:message:
 
(void) - onSnapshotComplete:videoTrack:image:success:
 
(void) - onUserAudioMuted:audioMuted:
 
(void) - onUserVideoMuted:videoMuted:
 
(void) - onUserVideoEnabled:videoEnabled:
 
(void) - onUserAudioInterruptedBegin:
 
(void) - onUserAudioInterruptedEnded:
 
(void) - onUserWillResignActive:
 
(void) - onUserWillBecomeActive:
 
(void) - onChannelRelayStateChanged:code:message:
 
(void) - onChannelRelayEvent:
 
(void) - onRemoteVideoChanged:trackType:state:reason:
 
(void) - onPublishLiveStreamStateChanged:state:errCode:
 
(void) - onPublishTaskStateChanged:state:
 
(void) - onAudioPlayingStateChanged:errorCode:
 
(void) - onRemoteAudioAccompanyStarted:
 
(void) - onRemoteAudioAccompanyFinished:
 
(void) - onAudioEffectFinished:
 
(void) - onRequestVideoExternalEncoderParameter:parameter:
 
(void) - onRequestVideoExternalEncoderFrame:frameType:
 
(void) - onAuthInfoWillExpire
 
(void) - onAuthInfoExpired
 

函数文档

◆ onJoinChannelResult:channel:elapsed: [1/2]

- (void) onJoinChannelResult: (int)  result
channel: (NSString *_Nonnull)  channel
elapsed: (int)  elapsed 
optional

加入频道回调

当应用调用 AliRtcEngine::joinChannel:name:onResult: 方法时,该回调表示成功/失败加入频道,并且返回频道加入的相关信息以及加入频道耗时

参数
result加入频道结果
channel加入频道名
elapsed加入频道耗时
注解
此回调等同于joinChannel接口的block参数,二者择一处理即可

◆ onJoinChannelResult:channel:userId:elapsed: [1/2]

- (void) onJoinChannelResult: (int)  result
channel: (NSString *_Nonnull)  channel
userId: (NSString *_Nonnull)  userId
elapsed: (int)  elapsed 
optional

加入频道回调

当应用调用 AliRtcEngine::joinChannel:name:onResultWithUserId: 方法时,该回调表示成功/失败加入频道,并且返回频道加入的相关信息以及加入频道耗时

参数
result加入频道结果
channel加入频道名
userId用户ID
elapsed加入频道耗时
注解
此回调等同于joinChannel接口的block参数,二者择一处理即可

◆ onLeaveChannelResult:stats: [1/2]

- (void) onLeaveChannelResult: (int)  result
stats: (AliRtcStats stats 
optional

离开频道回调

调用 AliRtcEngine::leaveChannel 方法后,该回调表示成功/失败离开频道,回调将会返回离会的result和该频道的基本信息

参数
result离开频道结果,成功返回0,失败返回错误码
stats本次频道内会话的数据统计信息。
注解
调用 AliRtcEngine::leaveChannel 接口后返回,如果 AliRtcEngine::leaveChannel 后直接调用 AliRtcEngine::destroy 将不会收到此回调

◆ onAudioPublishStateChanged:newState:elapseSinceLastState:channel: [1/2]

- (void) onAudioPublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

音频推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onVideoPublishStateChanged:newState:elapseSinceLastState:channel: [1/2]

- (void) onVideoPublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

视频推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel: [1/2]

- (void) onDualStreamPublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

次要流推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onScreenSharePublishStateChanged:newState:elapseSinceLastState:channel: [1/2]

- (void) onScreenSharePublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

屏幕分享推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onRemoteUserOnLineNotify:elapsed: [1/2]

- (void) onRemoteUserOnLineNotify: (NSString *_Nonnull)  uid
elapsed: (int)  elapsed 
optional

远端用户(通信模式)/(互动模式,主播角色)加入频道回调

该回调在以下场景会被触发

  • 通信模式:远端用户加入频道会触发该回调,如果当前用户在加入频道前已有其他用户在频道中,当前用户加入频道后也会收到已加入频道用户的回调
  • 互动模式:
    • 远端主播角色用户加入频道会触发该回调,如果当前用户在加入频道前已有其他主播在频道中,当前用户加入频道后也会收到已加入频道主播的回调
    • 远端观众角色调用 AliRtcEngine::setClientRole: 切换为主播角色 AliEngineClientRoleInteractive,同时设置了推流时,会触发该回调
参数
uid用户ID 从App server分配的唯一标示符
elapsed用户加入频道时的耗时
注解
互动模式下回调行为
  • 主播间可以互相收到加入频道回调
  • 观众可以收到主播加入频道回调
  • 主播无法收到观众加入频道回调

◆ onRemoteUserOffLineNotify:offlineReason: [1/2]

- (void) onRemoteUserOffLineNotify: (NSString *_Nonnull)  uid
offlineReason: (AliRtcUserOfflineReason reason 
optional

远端用户(通信模式)/(互动模式,主播角色)离开频道回调

该回调在以下场景会被触发

  • 通信模式:远端用户离开频道会触发该回调
  • 互动模式:
  • 通信模式和互动模式主播角色情况下,当长时间收不到远端用户数据,超时掉线时,会触发该回调
参数
uid用户ID 从App server分配的唯一标示符
reason用户离线的原因,详见 AliRtcUserOfflineReason

◆ onRemoteTrackAvailableNotify:audioTrack:videoTrack: [1/2]

- (void) onRemoteTrackAvailableNotify: (NSString *_Nonnull)  uid
audioTrack: (AliRtcAudioTrack audioTrack
videoTrack: (AliRtcVideoTrack videoTrack 
optional

远端用户的音视频流发生变化回调

该回调在以下场景会被触发

  • 当远端用户从未推流变更为推流(包括音频和视频)
  • 当远端用户从已推流变更为未推流(包括音频和视频)
  • 互动模式下,调用 AliRtcEngine::setClientRole: 切换为主播角色 AliRtcClientRoleInteractive,同时设置了推流时,会触发该回调
参数
uid用户ID,从App server分配的唯一标示符
audioTrack音频流类型,详见 AliRtcAudioTrack
videoTrack视频流类型,详见 AliRtcVideoTrack
注解
该回调仅在通信模式用户和互动模式下的主播角色才会触发

◆ onAudioSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel: [1/2]

- (void) onAudioSubscribeStateChanged: (NSString *_Nonnull)  uid
oldState: (AliRtcSubscribeState oldState
newState: (AliRtcSubscribeState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

音频流订阅情况变更回调

参数
uid用户ID,从App server分配的唯一标示符
oldState之前的订阅状态,详见 AliRtcSubscribeState
newState当前的订阅状态,详见 AliRtcSubscribeState
elapseSinceLastState两次状态变更时间间隔(毫秒)
channel当前频道id

◆ onVideoSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel: [1/2]

- (void) onVideoSubscribeStateChanged: (NSString *_Nonnull)  uid
oldState: (AliRtcSubscribeState oldState
newState: (AliRtcSubscribeState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

相机流订阅情况变更回调

参数
uid用户ID,从App server分配的唯一标示符
oldState之前的订阅状态,详见 AliRtcSubscribeState
newState当前的订阅状态,详见 AliRtcSubscribeState
elapseSinceLastState两次状态变更时间间隔(毫秒)
channel当前频道id

◆ onScreenShareSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel: [1/2]

- (void) onScreenShareSubscribeStateChanged: (NSString *_Nonnull)  uid
oldState: (AliRtcSubscribeState oldState
newState: (AliRtcSubscribeState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

屏幕分享流订阅情况变更回调

参数
uid用户ID,从App server分配的唯一标示符
oldState之前的订阅状态,详见 AliRtcSubscribeState
newState当前的订阅状态,详见 AliRtcSubscribeState
elapseSinceLastState两次状态变更时间间隔(毫秒)
channel当前频道id

◆ onSubscribeStreamTypeChanged:oldStreamType:newStreamType:elapseSinceLastState:channel: [1/2]

- (void) onSubscribeStreamTypeChanged: (NSString *_Nonnull)  uid
oldStreamType: (AliRtcVideoStreamType oldStreamType
newStreamType: (AliRtcVideoStreamType newStreamType
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

大小流订阅情况变更回调

参数
uid用户ID,从App server分配的唯一标示符
oldStreamType之前的订阅的大小流类型,详见 AliRtcVideoStreamType
newStreamType当前的订阅的大小流类型,详见 AliRtcVideoStreamType
elapseSinceLastState大小流类型变更时间间隔(毫秒)
channel当前频道id

◆ onUpdateRoleNotifyWithOldRole:newRole: [1/2]

- (void) onUpdateRoleNotifyWithOldRole: (AliRtcClientRole oldRole
newRole: (AliRtcClientRole newRole 
optional

当用户角色发生变化时通知

参数
oldRole变化前角色类型,参考 AliRtcClientRole
newRole变化后角色类型,参考 AliRtcClientRole
注解
调用 AliRtcEngine::setClientRole: 方法切换角色成功时触发此回调

◆ onNetworkQualityChanged:upNetworkQuality:downNetworkQuality: [1/2]

- (void) onNetworkQualityChanged: (NSString *_Nonnull)  uid
upNetworkQuality: (AliRtcNetworkQuality upQuality
downNetworkQuality: (AliRtcNetworkQuality downQuality 
optional

网络质量变化时发出的消息

参数
uid网络质量发生变化的uid
upQuality上行网络质量
downQuality下行网络质量
注解
当网络质量发生变化时触发,uid为""时代表self的网络质量变化

◆ onPublishStaticVideoFrame:isStaticFrame: [1/2]

- (void) onPublishStaticVideoFrame: (AliRtcVideoTrack trackType
isStaticFrame: (BOOL)  isStaticFrame 
optional

是否推静态图片

通过 AliRtcEngine::setPublishImage: 设置替代图片,上行网络状态差的情况下触发该回调。

参数
trackType视频流类型
isStaticFrame
  • YES: 上行网络差,开始推静态图片
  • NO: 上行网络恢复,推正常采集数据

◆ onConnectionStatusChange:reason: [1/2]

- (void) onConnectionStatusChange: (AliRtcConnectionStatus status
reason: (AliRtcConnectionStatusChangeReason reason 
optional

网络连接状态改变的回调

参数
status当前状态值, 对应值参考枚举 AliRtcConnectionStatus
reason引起状态变化的具体原因, 对应值参考枚举 AliRtcConnectionStatusChangeReason

◆ onBye: [1/2]

- (void) onBye: (int)  code
optional

被服务器踢出/会议结束频道的消息

参数
code原因参考 AliRtcOnByeType

◆ onOccurWarning:message: [1/2]

- (void) onOccurWarning: (int)  warn
message: (NSString *_Nonnull)  message 
optional

如果engine出现warning,通过这个回调通知app

参数
warnWarning type
message警告描述

◆ onOccurError:message: [1/2]

- (void) onOccurError: (int)  error
message: (NSString *_Nonnull)  message 
optional

如果engine出现error,通过这个回调通知app

参数
errorError类型,参考 AliRtcErrorCode
message错误描述

◆ onFirstAudioPacketSentWithTimecost: [1/2]

- (void) onFirstAudioPacketSentWithTimecost: (int)  timeCost
optional

音频首包发送回调

在首个音频数据包发送出去时触发此回调

参数
timeCost发送耗时,从入会开始到音频首包发送出去的耗时

◆ onFirstVideoPacketSentWithVideoTrack:timeCost: [1/2]

- (void) onFirstVideoPacketSentWithVideoTrack: (AliRtcVideoTrack videoTrack
timeCost: (int)  timeCost 
optional

视频首包发送回调

参数
videoTrack发送视频track,参考 AliRtcVideoTrack
timeCost耗时(毫秒)
注解
该接口用于视频首包发送的回调

◆ onFirstAudioPacketReceivedWithUid:timeCost: [1/2]

- (void) onFirstAudioPacketReceivedWithUid: (NSString *_Nonnull)  uid
timeCost: (int)  timeCost 
optional

音频首包接收回调

在接收到远端首个音频数据包时触发此回调

参数
uid远端用户ID,从App server分配的唯一标识符
timeCost接收耗时,从入会开始到音频首包接收到的耗时

◆ onFirstVideoPacketReceivedWithUid:videoTrack:timeCost: [1/2]

- (void) onFirstVideoPacketReceivedWithUid: (NSString *_Nonnull)  uid
videoTrack: (AliRtcVideoTrack videoTrack
timeCost: (int)  timeCost 
optional

视频首包接收回调

参数
uid远端用户ID,从App server分配的唯一标示符
videoTrack接收视频track,参考 AliRtcVideoTrack
timeCost耗时(毫秒)
注解
该接口用于视频首包接收的回调

◆ onFirstRemoteAudioDecodedWithUid:elapsed: [1/2]

- (void) onFirstRemoteAudioDecodedWithUid: (NSString *_Nonnull)  uid
elapsed: (int)  elapsed 
optional

已解码远端音频首帧回调

参数
uid远端用户ID,从App server分配的唯一标识符
elapsed从本地用户加入频道直至该回调触发的延迟, 单位为毫秒

◆ onFirstRemoteVideoFrameDrawn:videoTrack:width:height:elapsed: [1/2]

- (void) onFirstRemoteVideoFrameDrawn: (NSString *_Nonnull)  uid
videoTrack: (AliRtcVideoTrack videoTrack
width: (int)  width
height: (int)  height
elapsed: (int)  elapsed 
optional

远端用户的第一帧视频帧显示时触发这个消息

参数
uid远端用户ID,从App server分配的唯一标示符
videoTrack屏幕流或者相机流,参考 AliRtcVideoTrack
width视频宽度
height视频高度
elapsed本地用户加入频道直至该回调触发的延迟总耗时(毫秒)
注解
该接口用于远端用户的第一帧视频帧显示时的回调

◆ onFirstLocalVideoFrameDrawn:height:elapsed: [1/2]

- (void) onFirstLocalVideoFrameDrawn: (int)  width
height: (int)  height
elapsed: (int)  elapsed 
optional

预览开始显示第一帧视频帧时触发这个消息

参数
width本地预览视频宽度
height本地预览视频高度
elapsed从本地用户加入频道直至该回调触发的延迟总耗时(毫秒)
注解
该接口用于预览开始显示第一帧视频帧时的回调

◆ onAudioSampleCallback:audioSample: [1/2]

- (void) onAudioSampleCallback: (AliRtcAudioSource audioSource
audioSample: (AliRtcAudioDataSample *_Nonnull)  audioSample 
optional

订阅的音频数据回调

AliRtcEngine::subscribeAudioData:订阅音频数据成功后,回调对应类型的音频数据

参数
audioSource音频数据源类型,详见 AliRtcAudioSource
audioSample音频数据,详见 AliRtcAudioDataSample
注解
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常

◆ onPlaybackAudioFrameBeforeMixing:audioSample: [1/2]

- (void) onPlaybackAudioFrameBeforeMixing: (NSString *_Nonnull)  uid
audioSample: (AliRtcAudioDataSample *_Nonnull)  audioSample 
optional

混音前每一路远端用户的音频数据回调

混音前每一路远端用户的音频数据,AliRtcEngine::subscribeAudioData:订阅类型为AliRtcAudiosourceSub时触发此回调

参数
uid远端用户ID
audioSample音频数据,详见 AliRtcAudioDataSample
注解
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常

◆ onAudioVolumeCallback:totalVolume: [1/2]

- (void) onAudioVolumeCallback: (NSArray< AliRtcUserVolumeInfo * > *_Nullable)  array
totalVolume: (int)  totalVolume 
optional

订阅的音频音量,语音状态和uid

参数
array表示回调用户音量信息数组,包含用户uid,语音状态以及音量,uid为"0"表示本地说话人。
totalVolume混音后的总音量,范围[0,255]。在本地用户的回调中,totalVolume;为本地用户混音后的音量;在远端用户的回调中,totalVolume; 为所有说话者混音后的总音量

◆ onActiveSpeaker: [1/2]

- (void) onActiveSpeaker: (NSString *_Nonnull)  uid
optional

订阅当前正在说话的人

参数
uid说话人uid, 为"0"表示本地说话人。其返回的是当前时间段内声音最大的用户ID,而不是瞬时声音最大的用户ID

◆ onGetIfUserFetchObserverData [1/2]

- (BOOL) onGetIfUserFetchObserverData
optional

视频输出数据是否由用户来获取

返回
  • YES: 用户获取
  • NO(默认): sdk通过回调向外抛出

◆ onGetVideoFormatPreference [1/2]

- (AliRtcVideoFormat) onGetVideoFormatPreference
optional

视频数据输出格式

返回
期望视频输出格式
注解
在注册 AliRtcEngine::registerVideoSampleObserver 后触发回调,应用可返回期望输出的视频数据格式,默认返回 AliRtcYUV420

◆ onGetVideoAlignment [1/2]

- (AliRtcVideoObserAlignment) onGetVideoAlignment
optional

视频数据输出对齐方式

返回
期望视频数据对齐方式
注解
在注册 AliRtcEngine::registerVideoSampleObserver 后触发回调,应用可返回期望输出的视频数据格式,默认返回 AliRtcAlignmentDefault ,不需要对齐

◆ onGetVideoObservedFramePosition [1/2]

- (NSInteger) onGetVideoObservedFramePosition
optional

视频数据输出位置

返回
期望视频输出,参考 AliRtcVideoObserPosition
注解
在注册 AliRtcEngine::registerVideoSampleObserver 后触发回调,应用可返回期望输出的视频内容,对应数据将分别从onCaptureVideoSample/onPreEncodeVideoSample/onRemoteVideoSample
默认返回全部类型数据,即 AliRtcPositionPostCapture | AliRtcPositionPreRender | AliRtcPositionPreEncoder

◆ onGetObserverDataMirrorApplied [1/2]

- (BOOL) onGetObserverDataMirrorApplied
optional

视频输出数据是否需要镜像

返回
  • YES: 镜像
  • NO: 不镜像(默认)

◆ onGetSmoothRenderingEnabled [1/2]

- (BOOL) onGetSmoothRenderingEnabled
optional

拉流视频数据是否平滑输出

返回
  • YES: 平滑输出
  • NO: 直接输出(默认)
注解
只在 onGetIfUserFetchObserverData 为 NO 时有效

◆ onCaptureVideoSample:videoSample: [1/2]

- (BOOL) onCaptureVideoSample: (AliRtcVideoSource videoSource
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

订阅的本地采集视频数据回调

参数
videoSource视频流类型
videoSample视频裸数据
返回
  • YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)
  • NO: 不需要写回SDK

◆ onPreEncodeVideoSample:videoSample: [1/2]

- (BOOL) onPreEncodeVideoSample: (AliRtcVideoSource videoSource
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

订阅的本地编码前视频数据回调

参数
videoSource视频流类型
videoSample视频裸数据
返回
  • YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)
  • NO: 不需要写回SDK

◆ onRemoteVideoSample:videoSource:videoSample: [1/2]

- (BOOL) onRemoteVideoSample: (NSString *_Nonnull)  uid
videoSource: (AliRtcVideoSource videoSource
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

订阅的远端视频数据回调

参数
uid用户ID
videoSource视频流类型
videoSample视频裸数据
返回
  • YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)
  • NO: 不需要写回SDK

◆ onUserAudioMuted:audioMuted: [1/2]

- (void) onUserAudioMuted: (NSString *_Nonnull)  uid
audioMuted: (BOOL)  isMute 
optional

远端用户静音/取消静音回调

参数
uid远端用户ID
isMute该用户是否静音
  • YES: 静音
  • NO: 取消静音

◆ onUserVideoMuted:videoMuted: [1/2]

- (void) onUserVideoMuted: (NSString *_Nonnull)  uid
videoMuted: (BOOL)  isMute 
optional

对端用户发送视频黑帧数据发送通知

参数
uid执行muteVideo的用户
isMute
  • YES: 推流黑帧
  • NO: 正常推流
注解
该接口用于对端用户发送视频黑帧数据时的回调

◆ onUserVideoEnabled:videoEnabled: [1/2]

- (void) onUserVideoEnabled: (NSString *_Nullable)  uid
videoEnabled: (BOOL)  isEnable 
optional

对端用户关闭相机流采集发送通知

参数
uid执行EnableLocalVideo的用户
isEnable
  • YES: 打开相机流采集
  • NO: 关闭相机流采集
注解
该接口用于对端用户关闭相机流采集时的回调

◆ onUserAudioInterruptedBegin: [1/2]

- (void) onUserAudioInterruptedBegin: (NSString *_Nonnull)  uid
optional

用户音频被中断通知(一般用户打电话等音频被抢占场景)

参数
uid音频被中断的用户ID

◆ onUserAudioInterruptedEnded: [1/2]

- (void) onUserAudioInterruptedEnded: (NSString *_Nonnull)  uid
optional

用户音频中断结束通知(对应onUserAudioInterruptedBegin)

参数
uid音频中断结束的用户ID

◆ onUserWillResignActive: [1/2]

- (void) onUserWillResignActive: (NSString *_Nonnull)  uid
optional

远端用户应用退到后台

参数
uid用户

◆ onUserWillBecomeActive: [1/2]

- (void) onUserWillBecomeActive: (NSString *_Nonnull)  uid
optional

远端用户应用返回前台

参数
uid用户

◆ onTextureCreate:

- (void) onTextureCreate: (void *_Nullable)  context
optional

OpenGL上下文创建回调

参数
contextOpenGL上下文
注解
该回调是在SDK内部OpenGL上下文创建的时候触发

◆ onTextureUpdate:width:height:videoSample:

- (int) onTextureUpdate: (int)  textureId
width: (int)  width
height: (int)  height
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

OpenGL纹理更新回调

参数
textureIdOpenGL纹理ID
widthOpenGL纹理宽
heightOpenGL纹理高
videoSample视频帧数据,详见 AliRtcVideoDataSample
返回
OpenGL纹理ID
注解
  • 该回调会在每一帧视频数据上传到OpenGL纹理之后触发,当外部注册了OpenGL纹理数据观测器,在该回调中可以对纹理进行处理,并返回处理后的纹理ID
  • 注意该回调返回值必须为有效的纹理ID,如果不做任何处理必须返回参数textureId

◆ onTextureDestory

- (void) onTextureDestory
optional

OpenGL上下文销毁回调

注解
该回调是在SDK内部OpenGL上下文销毁的时候触发

◆ onAudioPlayingStateChanged:errorCode: [1/2]

- (void) onAudioPlayingStateChanged: (AliRtcAudioPlayingStateCode playState
errorCode: (AliRtcAudioPlayingErrorCode errorCode 
optional

本地伴奏播放状态回调

该回调在伴奏播放状态发生改变时触发,并通知当前的播放状态和错误码

参数
playState当前播放状态,详情参考 AliRtcAudioPlayingStateCode
errorCode播放错误码,详情参考 AliRtcAudioPlayingErrorCode

◆ onRemoteAudioAccompanyStarted: [1/2]

- (void) onRemoteAudioAccompanyStarted: (NSString *_Nonnull)  uid
optional

远端用户伴奏播放开始回调

参数
uid远端用户ID,从App server分配的唯一标识符

◆ onRemoteAudioAccompanyFinished: [1/2]

- (void) onRemoteAudioAccompanyFinished: (NSString *_Nonnull)  uid
optional

远端用户伴奏播放结束回调

参数
uid远端用户ID,从App server分配的唯一标识符

◆ onAudioEffectFinished: [1/2]

- (void) onAudioEffectFinished: (int)  soundId
optional

本地音效播放结束回调

参数
soundId用户给该音效文件分配的唯一ID

◆ onAuthInfoWillExpire [1/2]

- (void) onAuthInfoWillExpire
optional

用户鉴权信息即将过期通知,收到后30秒鉴权过期

注解
该回调在鉴权信息30秒前触发,收到该回调后应该及时更新鉴权信息,参考 AliRtcEngine::refreshAuthInfo:

◆ onAuthInfoExpired [1/2]

- (void) onAuthInfoExpired
optional

用户调用需要鉴权的接口,服务端返回信息过期

注解
该回调触发代表鉴权信息已过期,想要继续在会中,需要重新入会,参考 AliRtcEngine::joinChannel:name:onResultWithUserId:

◆ onLastmileDetectResultWithQuality: [1/2]

- (void) onLastmileDetectResultWithQuality: (AliRtcNetworkQuality networkQuality
optional

网络质量探测回调

参数
networkQuality网络质量 AliRtcNetworkQuality
注解
当调用 AliRtcEngine::startLastmileDetect 后会触发该回调

◆ onVideoResolutionChanged:videoTrack:width:height: [1/2]

- (void) onVideoResolutionChanged: (NSString *_Nonnull)  uid
videoTrack: (AliRtcVideoTrack videoTrack
width: (int)  width
height: (int)  height 
optional

视频分辨率变更

参数
uid用户ID。从App server分配的唯一标示符
videoTrack屏幕流或者相机流
width视频宽度
height视频高度

◆ onMediaRecordEvent:filePath: [1/2]

- (void) onMediaRecordEvent: (int)  event
filePath: (NSString *_Nullable)  filePath 
optional

文件录制回调事件

参数
event录制事件,0:录制开始,1:录制结束,2:打开文件失败,3:写文件失败
filePath录制文件路径
注解
该接口用于文件录制时的事件回调

◆ onRtcStats: [1/2]

- (void) onRtcStats: (AliRtcStats stats
optional

实时数据回调(2s触发一次)

参数
stats统计信息

◆ onRtcLocalVideoStats: [1/2]

- (void) onRtcLocalVideoStats: (AliRtcLocalVideoStats *_Nonnull)  localVideoStats
optional

本地视频统计信息(2s触发一次)

参数
localVideoStats本地视频统计信息
注解
SDK每两秒触发一次此统计信息回调

◆ onRtcRemoteVideoStats: [1/2]

- (void) onRtcRemoteVideoStats: (AliRtcRemoteVideoStats *_Nonnull)  remoteVideoStats
optional

远端视频统计信息(2s触发一次)

参数
remoteVideoStats远端视频统计信息

◆ onRtcLocalAudioStats: [1/2]

- (void) onRtcLocalAudioStats: (AliRtcLocalAudioStats *_Nonnull)  localAudioStats
optional

本地音频统计信息(2s触发一次)

参数
localAudioStats本地视频统计信息
注解
SDK每两秒触发一次此统计信息回调

◆ onRtcRemoteAudioStats: [1/2]

- (void) onRtcRemoteAudioStats: (AliRtcRemoteAudioStats *_Nonnull)  remoteAudioStats
optional

远端音频统计信息(2s触发一次)

参数
remoteAudioStats远端音频统计信息

◆ onMediaExtensionMsgReceived:message: [1/2]

- (void) onMediaExtensionMsgReceived: (NSString *_Nonnull)  uid
message: (NSData *_Nonnull)  data 
optional

收到媒体扩展信息回调

参数
uid发送用户ID
data媒体扩展信息
注解
当一端通过 AliRtcEngine::sendMediaExtensionMsg:repeatCount: 发送信息后,其他端通过该回调接收数据

◆ onDownlinkMessageNotify:

- (void) onDownlinkMessageNotify: (AliRtcMessage *_Nonnull)  messageInfo
optional

下行消息通道(接收消息)

参数
messageInfo消息内容
注解
该接口接收到下行消息后,使用 AliRtcEngine::sendDownlinkMessageResponse: 发送反馈消息
已废弃使用

◆ onUplinkMessageResponse:

- (void) onUplinkMessageResponse: (AliRtcMessageResponse *_Nonnull)  resultInfo
optional

上行消息返回结果(接收消息)

参数
resultInfo发送结果
注解
使用 AliRtcEngine::sendUplinkMessage: 发送消息后,会触发该接口接收上行消息反馈
已废弃使用

◆ onAudioRouteChanged:

- (void) onAudioRouteChanged: (AliRtcAudioRouteType routing
optional

音频路由发生变化回调(仅适用于Android、iOS平台)

所谓“音频路由”,是指声音是从手机的扬声器还是从听筒中播放出来,音频路由变化也就是声音的播放位置发生了变化

  • 当音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。
  • 当音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。
参数
routing当前使用的音频路由,详情参考 AliRtcAudioRouteType

◆ onSnapshotComplete:videoTrack:image:success: [1/2]

- (void) onSnapshotComplete: (NSString *_Nullable)  uid
videoTrack: (AliRtcVideoTrack videoTrack
image: (UIImage *_Nullable)  image
success: (BOOL)  success 
optional

截图回调

参数
uid远端用户uid
videoTrack截图视频track,参考 AliRtcVideoTrack
image截图数据
success截图结果
注解
成功时image返回截图数据,失败返回nil

◆ onPublishLiveStreamStateChanged:state:errCode: [1/2]

- (void) onPublishLiveStreamStateChanged: (NSString *_Nonnull)  streamURL
state: (AliRtcLiveTranscodingState state
errCode: (AliRtcTrascodingLiveStreamErrorCode errCode 
optional

旁路推流状态改变回调

参数
streamURL流地址
state推流状态, 参考 AliRtcLiveTranscodingState
errCode错误码, 参考 AliRtcTrascodingLiveStreamErrorCode
注解
该接口用于旁路推流状态改变的回调

◆ onPublishTaskStateChanged:state: [1/2]

- (void) onPublishTaskStateChanged: (NSString *_Nonnull)  streamURL
state: (AliRtcTrascodingLiveTaskStatus state 
optional

旁路任务状态改变回调

参数
streamURL流地址
state任务状态, 参考 AliRtcTrascodingLiveTaskStatus
注解
该接口用于旁路任务状态改变的回调

◆ onChannelRelayStateChanged:code:message: [1/2]

- (void) onChannelRelayStateChanged: (int)  state
code: (int)  code
message: (NSString *_Nullable)  message 
optional

跨频道转推状态变化通知

参数
state当前连麦状态,参考 AliRtcChannelRelayEvent
code当前错误码,参考 AliRtcChannelRelayErrorCode
message状态描述信息

◆ onChannelRelayEvent: [1/2]

- (void) onChannelRelayEvent: (int)  event
optional

跨频道转推事件通知

参数
event状态码,参考 AliRtcChannelRelayEvent

◆ onRemoteVideoChanged:trackType:state:reason: [1/2]

- (void) onRemoteVideoChanged: (NSString *_Nonnull)  uid
trackType: (AliRtcVideoTrack trackType
state: (AliRtcVideoState state
reason: (AliRtcVideoReason reason 
optional

用户remote video change通知

参数
uid需要被通知的用户
trackType变化视频track
state视频状态的类型
reason触发状态变化的原因

◆ onRequestVideoExternalEncoderParameter:parameter: [1/2]

- (void) onRequestVideoExternalEncoderParameter: (AliRtcVideoTrack trackType
parameter: (AliRtcVideoExternalEncoderParameter *_Nullable)  parameter 
optional

Qos参数发生变化通知

参数
trackType变化视频track
parameterqos参数结构体

◆ onRequestVideoExternalEncoderFrame:frameType: [1/2]

- (void) onRequestVideoExternalEncoderFrame: (AliRtcVideoTrack trackType
frameType: (AliRtcVideoEncodedFrameType frameType 
optional

Qos请求帧类型发生变化通知

参数
trackType变化视频track
frameType请求参考帧类型

◆ onJoinChannelResult:channel:elapsed: [2/2]

- (void) onJoinChannelResult: (int)  result
channel: (NSString *_Nonnull)  channel
elapsed: (int)  elapsed 
optional

加入频道回调

当应用调用 AliRtcEngine::joinChannel:name:onResult: 方法时,该回调表示成功/失败加入频道,并且返回频道加入的相关信息以及加入频道耗时

参数
result加入频道结果
channel加入频道名
elapsed加入频道耗时
注解
此回调等同于joinChannel接口的block参数,二者择一处理即可

◆ onJoinChannelResult:channel:userId:elapsed: [2/2]

- (void) onJoinChannelResult: (int)  result
channel: (NSString *_Nonnull)  channel
userId: (NSString *_Nonnull)  userId
elapsed: (int)  elapsed 
optional

加入频道回调

当应用调用 AliRtcEngine::joinChannel:name:onResultWithUserId: 方法时,该回调表示成功/失败加入频道,并且返回频道加入的相关信息以及加入频道耗时

参数
result加入频道结果
channel加入频道名
userId用户ID
elapsed加入频道耗时
注解
此回调等同于joinChannel接口的block参数,二者择一处理即可

◆ onLeaveChannelResult:stats: [2/2]

- (void) onLeaveChannelResult: (int)  result
stats: (AliRtcStats stats 
optional

离开频道回调

调用 AliRtcEngine::leaveChannel 方法后,该回调表示成功/失败离开频道,回调将会返回离会的result和该频道的基本信息

参数
result离开频道结果,成功返回0,失败返回错误码
stats本次频道内会话的数据统计信息。
注解
调用 AliRtcEngine::leaveChannel 接口后返回,如果 AliRtcEngine::leaveChannel 后直接调用 AliRtcEngine::destroy 将不会收到此回调

◆ onAudioPublishStateChanged:newState:elapseSinceLastState:channel: [2/2]

- (void) onAudioPublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

音频推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onVideoPublishStateChanged:newState:elapseSinceLastState:channel: [2/2]

- (void) onVideoPublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

视频推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onDualStreamPublishStateChanged:newState:elapseSinceLastState:channel: [2/2]

- (void) onDualStreamPublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

次要流推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onScreenSharePublishStateChanged:newState:elapseSinceLastState:channel: [2/2]

- (void) onScreenSharePublishStateChanged: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

屏幕分享推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id

◆ onScreenSharePublishStateChangedWithInfo:newState:elapseSinceLastState:channel:info:

- (void) onScreenSharePublishStateChangedWithInfo: (AliRtcPublishState oldState
newState: (AliRtcPublishState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel
info: (AliRtcScreenShareInfo *_Nonnull)  screenShareInfo 
optional

屏幕分享推流变更回调

参数
oldState之前的推流状态,详见 AliRtcPublishState
newState当前的推流状态,详见 AliRtcPublishState
elapseSinceLastState状态变更时间间隔(毫秒)
channel当前频道id
screenShareInfo本次屏幕共享推流配置信息
注解
屏幕共享推流状态变更时与onScreenSharePublishStateChanged回调均会触发

◆ onRemoteUserOnLineNotify:elapsed: [2/2]

- (void) onRemoteUserOnLineNotify: (NSString *_Nonnull)  uid
elapsed: (int)  elapsed 
optional

远端用户(通信模式)/(互动模式,主播角色)加入频道回调

该回调在以下场景会被触发

  • 通信模式:远端用户加入频道会触发该回调,如果当前用户在加入频道前已有其他用户在频道中,当前用户加入频道后也会收到已加入频道用户的回调
  • 互动模式:
    • 远端主播角色用户加入频道会触发该回调,如果当前用户在加入频道前已有其他主播在频道中,当前用户加入频道后也会收到已加入频道主播的回调
    • 远端观众角色调用 AliRtcEngine::setClientRole: 切换为主播角色 AliEngineClientRoleInteractive,会触发该回调
参数
uid用户ID 从App server分配的唯一标示符
elapsed用户加入频道时的耗时
注解
互动模式下回调行为
  • 主播间可以互相收到加入频道回调
  • 观众可以收到主播加入频道回调
  • 主播无法收到观众加入频道回调

◆ onRemoteUserOffLineNotify:offlineReason: [2/2]

- (void) onRemoteUserOffLineNotify: (NSString *_Nonnull)  uid
offlineReason: (AliRtcUserOfflineReason reason 
optional

远端用户(通信模式)/(互动模式,主播角色)离开频道回调

该回调在以下场景会被触发

  • 通信模式:远端用户离开频道会触发该回调
  • 互动模式:
  • 通信模式和互动模式主播角色情况下,当长时间收不到远端用户数据,超时掉线时,会触发该回调
参数
uid用户ID 从App server分配的唯一标示符
reason用户离线的原因,详见 AliRtcUserOfflineReason

◆ onRemoteTrackAvailableNotify:audioTrack:videoTrack: [2/2]

- (void) onRemoteTrackAvailableNotify: (NSString *_Nonnull)  uid
audioTrack: (AliRtcAudioTrack audioTrack
videoTrack: (AliRtcVideoTrack videoTrack 
optional

远端用户的音视频流发生变化回调

该回调在以下场景会被触发

  • 当远端用户从未推流变更为推流(包括音频和视频)
  • 当远端用户从已推流变更为未推流(包括音频和视频)
  • 互动模式下,调用 AliRtcEngine::setClientRole: 切换为主播角色 AliRtcClientRoleInteractive,同时设置了推流时,会触发该回调
    参数
    uid用户ID,从App server分配的唯一标示符
    audioTrack音频流类型,详见 AliRtcAudioTrack
    videoTrack视频流类型,详见 AliRtcVideoTrack
    注解
    该回调仅在通信模式用户和互动模式下的主播角色才会触发

◆ onAudioSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel: [2/2]

- (void) onAudioSubscribeStateChanged: (NSString *_Nonnull)  uid
oldState: (AliRtcSubscribeState oldState
newState: (AliRtcSubscribeState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

音频订阅情况变更回调

参数
uiduserId,从App server分配的唯一标示符
oldState之前的订阅状态,详见 AliRtcSubscribeState
newState当前的订阅状态,详见 AliRtcSubscribeState
elapseSinceLastState两次状态变更时间间隔(毫秒)
channel当前频道id

◆ onVideoSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel: [2/2]

- (void) onVideoSubscribeStateChanged: (NSString *_Nonnull)  uid
oldState: (AliRtcSubscribeState oldState
newState: (AliRtcSubscribeState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

相机流订阅情况变更回调

参数
uiduserId,从App server分配的唯一标示符
oldState之前的订阅状态,详见 AliRtcSubscribeState
newState当前的订阅状态,详见 AliRtcSubscribeState
elapseSinceLastState两次状态变更时间间隔(毫秒)
channel当前频道id

◆ onScreenShareSubscribeStateChanged:oldState:newState:elapseSinceLastState:channel: [2/2]

- (void) onScreenShareSubscribeStateChanged: (NSString *_Nonnull)  uid
oldState: (AliRtcSubscribeState oldState
newState: (AliRtcSubscribeState newState
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

屏幕分享流订阅情况变更回调

参数
uiduserId,从App server分配的唯一标示符
oldState之前的订阅状态,详见 AliRtcSubscribeState
newState当前的订阅状态,详见 AliRtcSubscribeState
elapseSinceLastState两次状态变更时间间隔(毫秒)
channel当前频道id

◆ onSubscribeStreamTypeChanged:oldStreamType:newStreamType:elapseSinceLastState:channel: [2/2]

- (void) onSubscribeStreamTypeChanged: (NSString *_Nonnull)  uid
oldStreamType: (AliRtcVideoStreamType oldStreamType
newStreamType: (AliRtcVideoStreamType newStreamType
elapseSinceLastState: (NSInteger)  elapseSinceLastState
channel: (NSString *_Nonnull)  channel 
optional

大小订阅情况变更回调

参数
uiduserId,从App server分配的唯一标示符
oldStreamType之前的订阅的大小流类型,详见 AliRtcVideoStreamType
newStreamType当前的订阅的大小流类型,详见 AliRtcVideoStreamType
elapseSinceLastState大小流类型变更时间间隔(毫秒)
channel当前频道id

◆ onUpdateRoleNotifyWithOldRole:newRole: [2/2]

- (void) onUpdateRoleNotifyWithOldRole: (AliRtcClientRole oldRole
newRole: (AliRtcClientRole newRole 
optional

当用户角色发生变化时通知

参数
oldRole变化前角色类型,参考 AliRtcClientRole
newRole变化后角色类型,参考 AliRtcClientRole
注解
调用 AliRtcEngine::setClientRole: 方法切换角色成功时触发此回调

◆ onNetworkQualityChanged:upNetworkQuality:downNetworkQuality: [2/2]

- (void) onNetworkQualityChanged: (NSString *_Nonnull)  uid
upNetworkQuality: (AliRtcNetworkQuality upQuality
downNetworkQuality: (AliRtcNetworkQuality downQuality 
optional

网络质量变化时发出的消息

参数
uid网络质量发生变化的uid
upQuality上行网络质量
downQuality下行网络质量
注解
当网络质量发生变化时触发,uid为""时代表self的网络质量变化

◆ onPublishStaticVideoFrame:isStaticFrame: [2/2]

- (void) onPublishStaticVideoFrame: (AliRtcVideoTrack trackType
isStaticFrame: (BOOL)  isStaticFrame 
optional

是否推静态图片

通过 AliRtcEngine::setPublishImage: 设置替代图片,上行网络状态差的情况下触发该回调。

参数
trackType视频流类型
isStaticFrame
  • YES: 上行网络差,开始推静态图片
  • NO: 上行网络恢复,推正常采集数据

◆ onConnectionStatusChange:reason: [2/2]

- (void) onConnectionStatusChange: (AliRtcConnectionStatus status
reason: (AliRtcConnectionStatusChangeReason reason 
optional

网络连接状态改变的回调

参数
status当前状态值, 对应值参考枚举 AliRtcConnectionStatus
reason引起状态变化的具体原因, 对应值参考枚举 AliRtcConnectionStatusChangeReason

◆ onBye: [2/2]

- (void) onBye: (int)  code
optional

被服务器踢出/会议结束频道的消息

参数
code原因参考 AliRtcOnByeType

◆ onOccurWarning:message: [2/2]

- (void) onOccurWarning: (int)  warn
message: (NSString *_Nonnull)  message 
optional

如果engine出现warning,通过这个回调通知app

参数
warnWarning type
message警告描述

◆ onOccurError:message: [2/2]

- (void) onOccurError: (int)  error
message: (NSString *_Nonnull)  message 
optional

如果engine出现error,通过这个回调通知app

参数
errorError类型,参考 AliRtcErrorCode
message错误描述

◆ onFirstAudioPacketSentWithTimecost: [2/2]

- (void) onFirstAudioPacketSentWithTimecost: (int)  timeCost
optional

音频首包发送回调

在首个音频数据包发送出去时触发此回调

参数
timeCost发送耗时

◆ onFirstVideoPacketSentWithVideoTrack:timeCost: [2/2]

- (void) onFirstVideoPacketSentWithVideoTrack: (AliRtcVideoTrack videoTrack
timeCost: (int)  timeCost 
optional

视频首包发送回调

参数
videoTrack发送视频track,参考 AliRtcVideoTrack
timeCost耗时(毫秒)
注解
该接口用于视频首包发送的回调

◆ onFirstAudioPacketReceivedWithUid:timeCost: [2/2]

- (void) onFirstAudioPacketReceivedWithUid: (NSString *_Nonnull)  uid
timeCost: (int)  timeCost 
optional

音频首包接收回调

在接收到远端首个音频数据包时触发此回调

参数
uid远端用户ID,从App server分配的唯一标识符
timeCost接收耗时,从入会开始到音频首包接收到的耗时

◆ onFirstVideoPacketReceivedWithUid:videoTrack:timeCost: [2/2]

- (void) onFirstVideoPacketReceivedWithUid: (NSString *_Nonnull)  uid
videoTrack: (AliRtcVideoTrack videoTrack
timeCost: (int)  timeCost 
optional

视频首包接收回调

参数
uid远端用户ID,从App server分配的唯一标示符
videoTrack接收视频track,参考 AliRtcVideoTrack
timeCost耗时(毫秒)
注解
该接口用于视频首包接收的回调

◆ onFirstRemoteAudioDecodedWithUid:elapsed: [2/2]

- (void) onFirstRemoteAudioDecodedWithUid: (NSString *_Nonnull)  uid
elapsed: (int)  elapsed 
optional

已解码远端音频首帧回调

参数
uid远端用户ID,从App server分配的唯一标识符
elapsed从本地用户加入频道直至该回调触发的延迟, 单位为毫秒

◆ onFirstRemoteVideoFrameDrawn:videoTrack:width:height:elapsed: [2/2]

- (void) onFirstRemoteVideoFrameDrawn: (NSString *_Nonnull)  uid
videoTrack: (AliRtcVideoTrack videoTrack
width: (int)  width
height: (int)  height
elapsed: (int)  elapsed 
optional

远端用户的第一帧视频帧显示时触发这个消息

参数
uid远端用户ID,从App server分配的唯一标示符
videoTrack屏幕流或者相机流,参考 AliRtcVideoTrack
width视频宽度
height视频高度
elapsed本地用户加入频道直至该回调触发的延迟总耗时(毫秒)
注解
该接口用于远端用户的第一帧视频帧显示时的回调

◆ onFirstLocalVideoFrameDrawn:height:elapsed: [2/2]

- (void) onFirstLocalVideoFrameDrawn: (int)  width
height: (int)  height
elapsed: (int)  elapsed 
optional

预览开始显示第一帧视频帧时触发这个消息

参数
width本地预览视频宽度
height本地预览视频高度
elapsed从本地用户加入频道直至该回调触发的延迟总耗时(毫秒)
注解
该接口用于预览开始显示第一帧视频帧时的回调

◆ onAudioVolumeCallback:totalVolume: [2/2]

- (void) onAudioVolumeCallback: (NSArray< AliRtcUserVolumeInfo * > *_Nullable)  array
totalVolume: (int)  totalVolume 
optional

订阅的音频音量,语音状态和uid

参数
array表示回调用户音量信息数组,包含用户uid,语音状态以及音量,uid为"0"表示本地说话人。
totalVolume混音后的总音量(0~255)。在本地用户的回调中,totalVolume 为本地用户混音后的音量;在远端用户的回调中,totalVolume 为所有说话者混音后的总音量。

◆ onActiveSpeaker: [2/2]

- (void) onActiveSpeaker: (NSString *_Nonnull)  uid
optional

订阅当前正在说话的人

参数
uid说话人uid, 为"0"表示本地说话人。其返回的是当前时间段内声音最大的用户id,而不是瞬时声音最大的用户id

◆ onAudioSampleCallback:audioSample: [2/2]

- (void) onAudioSampleCallback: (AliRtcAudioSource audioSource
audioSample: (AliRtcAudioDataSample *_Nonnull)  audioSample 
optional

订阅的音频数据回调

AliRtcEngine::subscribeAudioData: 订阅数据成功后,SDK会通过此回调通知对应音频数据类型的音频数据

参数
audioSource音频数据源类型,详见AliRtcAudioSource
audioSample音频数据采样,详见AliRtcAudioDataSample
注解
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常

◆ onPlaybackAudioFrameBeforeMixing:audioSample: [2/2]

- (void) onPlaybackAudioFrameBeforeMixing: (NSString *_Nonnull)  uid
audioSample: (AliRtcAudioDataSample *)  audioSample 
optional

混音前某个用户的音频数据

AliRtcEngine::subscribeAudioData:订阅音频数据类型为AliRtcAudiosourceSub时会触发此回调

参数
uid用户ID
audioSample该用户的音频数据采样,详见AliRtcAudioDataSample
注解
请不要在此回调函数中做任何耗时操作,否则可能导致声音异常

◆ onAudioDeviceRecordLevel:

- (void) onAudioDeviceRecordLevel: (int)  level
optional

音频采集设备测试回调

参数
level音频采集设备音量值

◆ onAudioDevicePlayoutLevel:

- (void) onAudioDevicePlayoutLevel: (int)  level
optional

音频播放设备测试回调

参数
level音频采集设备音量值

◆ onAudioDeviceStateChanged:deviceType:deviceState:

- (void) onAudioDeviceStateChanged: (AliRtcDeviceInfo *_Nonnull)  deviceInfo
deviceType: (AliRtcExternalDeviceType deviceType
deviceState: (AliRtcExternalDeviceState deviceState 
optional

音频设备状态变更

参数
deviceInfo外接设备信息
deviceType外接设备类型
deviceState外接设备状态

◆ onVideoDeviceStateChanged:deviceType:deviceState:

- (void) onVideoDeviceStateChanged: (AliRtcDeviceInfo *_Nonnull)  deviceInfo
deviceType: (AliRtcExternalDeviceType deviceType
deviceState: (AliRtcExternalDeviceState deviceState 
optional

视频设备状态变更

参数
deviceInfo外接设备信息
deviceType外接设备类型
deviceState外接设备状态

◆ onVideoResolutionChanged:videoTrack:width:height: [2/2]

- (void) onVideoResolutionChanged: (NSString *_Nonnull)  uid
videoTrack: (AliRtcVideoTrack videoTrack
width: (int)  width
height: (int)  height 
optional

视频分辨率变更

参数
uid用户ID。从App server分配的唯一标示符
videoTrack屏幕流或者相机流
width视频宽度
height视频高度

◆ onLastmileDetectResultWithQuality: [2/2]

- (void) onLastmileDetectResultWithQuality: (AliRtcNetworkQuality networkQuality
optional

网络质量探测回调

参数
networkQuality网络质量 AliRtcNetworkQuality
注解
当调用 AliRtcEngine::startLastmileDetect 后会触发该回调

◆ onGetIfUserFetchObserverData [2/2]

- (BOOL) onGetIfUserFetchObserverData
optional

视频输出数据是否由用户来获取

返回
  • YES: 用户获取
  • NO(默认): sdk通过回调向外抛出

◆ onGetVideoFormatPreference [2/2]

- (AliRtcVideoFormat) onGetVideoFormatPreference
optional

视频数据输出格式

返回
期望视频输出格式
注解
在注册 AliRtcEngine::registerVideoSampleObserver 后触发回调,应用可返回期望输出的视频数据格式,默认返回AliRtcYUV420

◆ onGetVideoAlignment [2/2]

- (AliRtcVideoObserAlignment) onGetVideoAlignment
optional

视频数据输出对齐方式

返回
期望视频数据对齐方式
注解
在注册 AliRtcEngine::registerVideoSampleObserver 后触发回调,应用可返回期望输出的视频数据格式,默认返回AliRtcAlignmentDefault,不需要对齐

◆ onGetVideoObservedFramePosition [2/2]

- (NSInteger) onGetVideoObservedFramePosition
optional

视频数据输出位置

返回
期望视频输出,参考 AliRtcVideoObserPosition
注解
在注册 AliRtcEngine::registerVideoSampleObserver 后触发回调,应用可返回期望输出的视频内容,对应数据将分别从onCaptureVideoSample/onPreEncodeVideoSample/onRemoteVideoSample
默认返回全部类型数据,即 AliRtcPositionPostCapture | AliRtcPositionPreRender | AliRtcPositionPreEncoder

◆ onGetObserverDataMirrorApplied [2/2]

- (BOOL) onGetObserverDataMirrorApplied
optional

视频输出数据是否需要镜像

返回
  • YES: 镜像
  • NO: 不镜像(默认)

◆ onGetSmoothRenderingEnabled [2/2]

- (BOOL) onGetSmoothRenderingEnabled
optional

拉流视频数据是否平滑输出

返回
  • YES: 平滑输出
  • NO: 直接输出(默认)
注解
只在 onGetIfUserFetchObserverData 为 NO 时有效

◆ onCaptureVideoSample:videoSample: [2/2]

- (BOOL) onCaptureVideoSample: (AliRtcVideoSource videoSource
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

订阅的本地采集视频数据回调

参数
videoSource视频流类型
videoSample视频裸数据
返回
  • YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)
  • NO: 不需要写回SDK

◆ onPreEncodeVideoSample:videoSample: [2/2]

- (BOOL) onPreEncodeVideoSample: (AliRtcVideoSource videoSource
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

订阅的本地编码前视频数据回调

参数
videoSource视频流类型
videoSample视频裸数据
返回
  • YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)
  • NO: 不需要写回SDK

◆ onRemoteVideoSample:videoSource:videoSample: [2/2]

- (BOOL) onRemoteVideoSample: (NSString *_Nonnull)  uid
videoSource: (AliRtcVideoSource videoSource
videoSample: (AliRtcVideoDataSample *_Nonnull)  videoSample 
optional

订阅的远端视频数据回调

参数
uid用户ID
videoSource视频流类型
videoSample视频裸数据
返回
  • YES: 需要写回SDK(只对I420和CVPixelBuffer(ios/mac)有效)
  • NO: 不需要写回SDK

◆ onMediaRecordEvent:filePath: [2/2]

- (void) onMediaRecordEvent: (int)  event
filePath: (NSString *_Nullable)  filePath 
optional

文件录制回调事件

参数
event录制事件,0:录制开始,1:录制结束,2:打开文件失败,3:写文件失败
filePath录制文件路径
注解
该接口用于文件录制时的事件回调

◆ onRtcStats: [2/2]

- (void) onRtcStats: (AliRtcStats stats
optional

实时数据回调(2s触发一次)

参数
stats统计信息

◆ onRtcLocalVideoStats: [2/2]

- (void) onRtcLocalVideoStats: (AliRtcLocalVideoStats *_Nonnull)  localVideoStats
optional

本地视频统计信息(2s触发一次)

参数
localVideoStats本地视频统计信息
注解
SDK每两秒触发一次此统计信息回调

◆ onRtcRemoteVideoStats: [2/2]

- (void) onRtcRemoteVideoStats: (AliRtcRemoteVideoStats *_Nonnull)  remoteVideoStats
optional

远端视频统计信息(2s触发一次)

参数
remoteVideoStats远端视频统计信息

◆ onRtcLocalAudioStats: [2/2]

- (void) onRtcLocalAudioStats: (AliRtcLocalAudioStats *_Nonnull)  localAudioStats
optional

本地音频统计信息(2s触发一次)

参数
localAudioStats本地视频统计信息
注解
SDK每两秒触发一次此统计信息回调

◆ onRtcRemoteAudioStats: [2/2]

- (void) onRtcRemoteAudioStats: (AliRtcRemoteAudioStats *_Nonnull)  remoteAudioStats
optional

远端音频统计信息(2s触发一次)

参数
remoteAudioStats远端音频统计信息

◆ onMediaExtensionMsgReceived:message: [2/2]

- (void) onMediaExtensionMsgReceived: (NSString *_Nonnull)  uid
message: (NSData *_Nonnull)  data 
optional

收到媒体扩展信息回调

参数
uid发送用户userId
data媒体扩展信息
注解
当一端通过 AliRtcEngine::sendMediaExtensionMsg:repeatCount: 发送信息后,其他端通过该回调接收数据

◆ onSnapshotComplete:videoTrack:image:success: [2/2]

- (void) onSnapshotComplete: (NSString *_Nullable)  uid
videoTrack: (AliRtcVideoTrack videoTrack
image: (NSImage *_Nullable)  image
success: (BOOL)  success 
optional

截图回调

参数
uid远端用户uid
videoTrack截图视频track,参考 AliRtcVideoTrack
image截图数据
success截图结果
注解
成功image返回截图数据,失败返回nil

◆ onUserAudioMuted:audioMuted: [2/2]

- (void) onUserAudioMuted: (NSString *_Nullable)  uid
audioMuted: (BOOL)  isMute 
optional

远端用户静音/取消静音回调

参数
uid远端用户ID
isMute该用户是否静音
  • YES: 静音
  • NO: 取消静音

◆ onUserVideoMuted:videoMuted: [2/2]

- (void) onUserVideoMuted: (NSString *_Nullable)  uid
videoMuted: (BOOL)  isMute 
optional

对端用户发送视频黑帧数据发送通知

参数
uid执行muteVideo的用户
isMute
  • YES: 推流黑帧
  • NO: 正常推流
注解
该接口用于对端用户发送视频黑帧数据时的回调

◆ onUserVideoEnabled:videoEnabled: [2/2]

- (void) onUserVideoEnabled: (NSString *_Nullable)  uid
videoEnabled: (BOOL)  isEnable 
optional

对端用户关闭相机流采集发送通知

参数
uid执行EnableLocalVideo的用户
isEnable
  • YES: 打开相机流采集
  • NO: 关闭相机流采集
注解
该接口用于对端用户关闭相机流采集时的回调

◆ onUserAudioInterruptedBegin: [2/2]

- (void) onUserAudioInterruptedBegin: (NSString *_Nullable)  uid
optional

用户音频被中断通知(一般用户打电话等音频被抢占场景)

参数
uid音频被中断的用户ID

◆ onUserAudioInterruptedEnded: [2/2]

- (void) onUserAudioInterruptedEnded: (NSString *_Nullable)  uid
optional

用户音频中断结束通知(对应onUserAudioInterruptedBegin)

参数
uid音频中断结束的用户ID

◆ onUserWillResignActive: [2/2]

- (void) onUserWillResignActive: (NSString *_Nullable)  uid
optional

远端用户应用退到后台

参数
uid用户

◆ onUserWillBecomeActive: [2/2]

- (void) onUserWillBecomeActive: (NSString *_Nullable)  uid
optional

远端用户应用返回前台

参数
uid用户

◆ onChannelRelayStateChanged:code:message: [2/2]

- (void) onChannelRelayStateChanged: (int)  state
code: (int)  code
message: (NSString *_Nullable)  message 
optional

跨频道转推状态变化通知

参数
state当前连麦状态,参考 AliRtcChannelRelayEvent
code当前错误码,参考 AliRtcChannelRelayErrorCode
message状态描述信息

◆ onChannelRelayEvent: [2/2]

- (void) onChannelRelayEvent: (int)  event
optional

跨频道转推事件通知

参数
event状态码,参考 AliRtcChannelRelayEvent

◆ onRemoteVideoChanged:trackType:state:reason: [2/2]

- (void) onRemoteVideoChanged: (NSString *_Nonnull)  uid
trackType: (AliRtcVideoTrack trackType
state: (AliRtcVideoState state
reason: (AliRtcVideoReason reason 
optional

用户remote video change通知

参数
uid需要被通知的用户
trackType变化视频track
state视频状态的类型
reason触发状态变化的原因

◆ onPublishLiveStreamStateChanged:state:errCode: [2/2]

- (void) onPublishLiveStreamStateChanged: (NSString *_Nonnull)  streamURL
state: (AliRtcLiveTranscodingState state
errCode: (AliRtcTrascodingLiveStreamErrorCode errCode 
optional

旁路推流状态改变回调

参数
streamURL流地址
state推流状态, 参考 AliRtcLiveTranscodingState
errCode错误码, 参考 AliRtcTrascodingLiveStreamErrorCode
注解
该接口用于旁路推流状态改变的回调

◆ onPublishTaskStateChanged:state: [2/2]

- (void) onPublishTaskStateChanged: (NSString *_Nonnull)  streamURL
state: (AliRtcTrascodingLiveTaskStatus state 
optional

旁路任务状态改变回调

参数
streamURL流地址
state任务状态, 参考 AliRtcTrascodingLiveTaskStatus
注解
该接口用于旁路任务状态改变的回调

◆ onAudioPlayingStateChanged:errorCode: [2/2]

- (void) onAudioPlayingStateChanged: (AliRtcAudioPlayingStateCode playState
errorCode: (AliRtcAudioPlayingErrorCode errorCode 
optional

本地伴奏播放状态回调

该回调在伴奏播放状态发生改变时触发,并通知当前的播放状态和错误码

参数
playState当前播放状态,详情参考 AliRtcAudioPlayingStateCode
errorCode播放错误码,详情参考 AliRtcAudioPlayingErrorCode

◆ onRemoteAudioAccompanyStarted: [2/2]

- (void) onRemoteAudioAccompanyStarted: (NSString *_Nonnull)  uid
optional

远端用户伴奏播放开始回调

参数
uid远端用户ID,从App server分配的唯一标识符

◆ onRemoteAudioAccompanyFinished: [2/2]

- (void) onRemoteAudioAccompanyFinished: (NSString *_Nonnull)  uid
optional

远端用户伴奏播放结束回调

参数
uid远端用户ID,从App server分配的唯一标识符

◆ onAudioEffectFinished: [2/2]

- (void) onAudioEffectFinished: (int)  soundId
optional

本地音效播放结束回调

参数
soundId用户给该音效文件分配的唯一ID

◆ onRequestVideoExternalEncoderParameter:parameter: [2/2]

- (void) onRequestVideoExternalEncoderParameter: (AliRtcVideoTrack trackType
parameter: (AliRtcVideoExternalEncoderParameter *_Nullable)  parameter 
optional

Qos参数发生变化通知

参数
trackType变化视频track
parameterqos参数结构体

◆ onRequestVideoExternalEncoderFrame:frameType: [2/2]

- (void) onRequestVideoExternalEncoderFrame: (AliRtcVideoTrack trackType
frameType: (AliRtcVideoEncodedFrameType frameType 
optional

Qos请求帧类型发生变化通知

参数
trackType变化视频track
frameType请求参考帧类型

◆ onAuthInfoWillExpire [2/2]

- (void) onAuthInfoWillExpire
optional

用户鉴权信息即将过期通知,收到后30秒鉴权过期

注解
该回调在鉴权信息30秒前触发,收到该回调后应该及时更新鉴权信息,参考 AliRtcEngine::refreshAuthInfo:

◆ onAuthInfoExpired [2/2]

- (void) onAuthInfoExpired
optional

用户调用需要鉴权的接口,服务端返回信息过期

注解
该回调触发代表鉴权信息已过期,想要继续在会中,需要重新入会,参考 AliRtcEngine::joinChannel:name:onResultWithUserId: