ARtcChannelDelegate

最近更新时间:2022-09-20 05:17:40

ARtcDelegate 接口类向 App 发送回调通知,上报运行时的事件。

didOccurWarning

- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurWarning:(ARWarningCode)warningCode;

发生警告回调

参数描述
rtcChannelARtcChannel
warningCode警告码,详见ARWarningCode

didOccurError

- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurError:(ARErrorCode)errorCode;

发生错误回调

参数描述
rtcChannelARtcChannel
errorCode错误码,详见ARErrorCode

rtcChannelDidJoinChannel

- (void)rtcChannelDidJoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;

加入频道回调

参数描述
rtcChannelARtcChannel
uid用户ID
elapsed从开始重连到重连成功的时间(ms)。

rtcChannelDidRejoinChannel

- (void)rtcChannelDidRejoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;

重新加入频道回调

参数描述
rtcChannelARtcChannel
uid用户ID
elapsed从开始重连到重连成功的时间(ms)。

rtcChannelDidLeaveChannel

- (void)rtcChannelDidLeaveChannel:(ARtcChannel *_Nonnull)rtcChannel withStats:(ARChannelStats *_Nonnull)stats;

已离开频道回调

参数描述
rtcChannelARtcChannel
stats通话相关的统计信息:ARChannelStats

didClientRoleChanged

- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didClientRoleChanged:(ARClientRole)oldRole newRole:(ARClientRole)newRole;

用户角色已切换回调

参数描述
rtcChannelARtcChannel
oldRole切换前的角色
newRole切换后的角色

didJoinedOfUid

- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didJoinedOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;

远端用户/主播加入回调

参数描述
rtcChannelARtcChannel
uid新加入频道的远端用户/主播 ID。如果 joinChannelByToken 中指定了 uid,则此处返回该 ID;否则使用ar云平台服务器自动分配的 ID。
elapsed从本地用户加入频道 joinChannelByToken开始到发生此事件过去的时间(ms)。

didOfflineOfUid

- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOfflineOfUid:(NSString *_Nonnull)uid reason:(ARUserOfflineReason)reason;

远端用户(通信场景)/主播(直播场景)离开当前频道回调

参数描述
rtcChannelARtcChannel
uid离线的用户 ID。
reason离线原因,详见 ARUserOfflineReason

connectionChangedToState

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel connectionChangedToState:(ARConnectionStateType)state reason:(ARConnectionChangedReason)reason;

网络连接状态已改变回调

该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。

参数描述
rtcChannelARtcChannel
state当前的网络连接状态,详见 ARConnectionStateType
reason离线原因,详见 ARConnectionChangedReason

rtcChannelDidLost

- (void)rtcChannelDidLost:(ARtcChannel * _Nonnull)rtcChannel;

网络连接中断,且 SDK 无法在 10 秒内连接服务器回调

SDK 在调用 joinChannelByToken ( 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。

如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。

参数描述
rtcChannelARtcChannel

tokenPrivilegeWillExpire

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel tokenPrivilegeWillExpire:(NSString *_Nonnull)token;

Token 服务即将过期回调

在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒应用程序更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。

参数描述
rtcChannelARtcChannel
token即将服务失效的 Token。

rtcChannelRequestToken

- (void)rtcChannelRequestToken:(ARtcChannel *_Nonnull)rtcChannel;

Token 过期回调

在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。 该回调通知 App 需要生成新的 Token,并需调用 renewToken 为 SDK 指定新的 Token。

参数描述
rtcChannelARtcChannel

activeSpeaker

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel activeSpeaker:(NSString * _Nonnull)speakerUid;

监测到活跃用户的回调

该回调获取当前时间段内累积音量最大者。如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。

注意事项:

  • 你需要开启 enableAudioVolumeIndication 方法才能收到该回调
  • uid 返回的是当前时间段内声音最大的用户 uid,而不是瞬时声音最大的用户 uid。
参数描述
rtcChannelARtcChannel
speakerUid当前时间段声音最大的用户的 uid。

videoSizeChangedOfUid

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel videoSizeChangedOfUid:(NSString *_Nonnull)uid size:(CGSize)size rotation:(NSInteger)rotation;

本地或远端视频大小和旋转信息发生改变回调

参数描述
rtcChannelARtcChannel
uid图像尺寸和旋转信息发生变化的用户的用户 ID
size新的视频尺寸
rotation旋转信息 (0 到 360)

remoteVideoStateChangedOfUid

- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel remoteVideoStateChangedOfUid:(NSString *_Nonnull)uid state:(ARVideoRemoteState)state reason:(ARVideoRemoteStateReason)reason elapsed:(NSInteger)elapsed;

远端视频状态发生改变回调

参数描述
rtcChannelARtcChannel
uid发生视频状态改变的远端用户 ID。
state远端视频流状态。详见 ARVideoRemoteState
reason远端视频流状态改变的具体原因。详见 ARVideoRemoteStateReason
elapsed从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。

remoteAudioStateChangedOfUid

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStateChangedOfUid:(NSString *_Nonnull)uid state:(ARAudioRemoteState)state reason:(ARAudioRemoteStateReason)reason elapsed:(NSInteger)elapsed;

远端音频流状态发生改变回调。

远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。

参数描述
rtcChannelARtcChannel
uid发生音频状态改变的远端用户 ID。
state远端视频流状态。详见 ARAudioRemoteState
reason远端视频流状态改变的具体原因。详见 ARAudioRemoteStateReason
elapsed从本地用户调用 joinChannelByToken 方法到发生本事件经历的时间,单位为 ms。

reportRtcStats

-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel reportRtcStats:(ARChannelStats * _Nonnull)stats;

当前通话统计回调。 该回调在通话或直播中每两秒触发一次。

参数描述
rtcChannelARtcChannel
stats通话相关的数据统计信息,详见 ARChannelStats

networkQuality

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel networkQuality:(NSString * _Nonnull)uid txQuality:(ARNetworkQuality)txQuality rxQuality:(ARNetworkQuality)rxQuality;

通话中每个用户的网络上下行 last mile 质量报告回调

该回调描述每个用户在通话中的 last mile 网络状态,其中 last mile 是指设备到 ar云平台 边缘服务器的网络状态。 该回调每 2 秒触发一次。如果远端有多个用户,该回调每 2 秒会被触发多次。

参数描述
rtcChannelARtcChannel
uid用户 ID。表示该回调报告的是持有该 ID 的用户的网络质量。
txQuality该用户的上行网络质量。基于上行视频的发送码率、上行丢包率、平均往返时延和网络抖动计算。该值代表当前的上行网络质量,帮助判断是否可以支持当前设置的视频编码属性。假设上行码率是 500 Kbps,那么支持 480 x 480 的分辨率、30 fps 的帧率没有问题,但是支持 1280 x 720 的分辨率就会有困难。详见 ARNetworkQuality
rxQuality该用户的下行网络质量。基于下行网络的丢包率、平均往返延时和网络抖动计算。详见 ARNetworkQuality

remoteVideoStats

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteVideoStats:(ARtcRemoteVideoStats * _Nonnull)stats;

通话中远端视频流的统计信息回调

该回调描述远端用户在通话中端到端的视频流统计信息,针对每个远端用户/主播每 2 秒触发一次。

如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。

参数描述
rtcChannelARtcChannel
stats远端视频统计数据,详见 ARtcRemoteVideoStats

remoteAudioStats

- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStats:(ARtcRemoteAudioStats * _Nonnull)stats;

通话中远端音频流的统计信息回调,用于取代 audioQualityOfUid

该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。

如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。

audioTransportStatsOfUid 回调相比,该回调更贴近用户的主观感受。

比如,当网络发生丢包时,因 FEC(Forward Error Correction,向前纠错码)或重传恢复,最终的音频丢帧率不高,则可以认为整个质量较好。

参数描述
rtcChannelARtcChannel
stats远端音频统计数据,详细定义见 ARtcRemoteAudioStats