ARtcDelegate 接口类向 App 发送回调通知,上报运行时的事件。
didOccurWarning
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurWarning:(ARWarningCode)warningCode;
发生警告回调
didOccurError
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOccurError:(ARErrorCode)errorCode;
发生错误回调
rtcChannelDidJoinChannel
- (void)rtcChannelDidJoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
加入频道回调
参数 | 描述 |
---|
rtcChannel | ARtcChannel 类 |
uid | 用户ID |
elapsed | 从开始重连到重连成功的时间(ms)。 |
rtcChannelDidRejoinChannel
- (void)rtcChannelDidRejoinChannel:(ARtcChannel *_Nonnull)rtcChannel withUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
重新加入频道回调
参数 | 描述 |
---|
rtcChannel | ARtcChannel 类 |
uid | 用户ID |
elapsed | 从开始重连到重连成功的时间(ms)。 |
rtcChannelDidLeaveChannel
- (void)rtcChannelDidLeaveChannel:(ARtcChannel *_Nonnull)rtcChannel withStats:(ARChannelStats *_Nonnull)stats;
已离开频道回调
didClientRoleChanged
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didClientRoleChanged:(ARClientRole)oldRole newRole:(ARClientRole)newRole;
用户角色已切换回调
didJoinedOfUid
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didJoinedOfUid:(NSString *_Nonnull)uid elapsed:(NSInteger)elapsed;
远端用户/主播加入回调
didOfflineOfUid
- (void)rtcChannel:(ARtcChannel *_Nonnull)rtcChannel didOfflineOfUid:(NSString *_Nonnull)uid reason:(ARUserOfflineReason)reason;
远端用户(通信场景)/主播(直播场景)离开当前频道回调
connectionChangedToState
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel connectionChangedToState:(ARConnectionStateType)state reason:(ARConnectionChangedReason)reason;
网络连接状态已改变回调
该回调在网络连接状态发生改变的时候触发,并告知用户当前的网络连接状态,和引起网络状态改变的原因。
rtcChannelDidLost
- (void)rtcChannelDidLost:(ARtcChannel * _Nonnull)rtcChannel;
网络连接中断,且 SDK 无法在 10 秒内连接服务器回调
SDK 在调用 joinChannelByToken ( 后无论是否加入成功,只要 10 秒和服务器无法连接就会触发该回调。
如果 SDK 在断开连接后,20 分钟内还是没能重新加入频道,SDK 会停止尝试重连。
tokenPrivilegeWillExpire
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel tokenPrivilegeWillExpire:(NSString *_Nonnull)token;
Token 服务即将过期回调
在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒应用程序更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 renewToken 将新生成的 Token 传给 SDK。
rtcChannelRequestToken
- (void)rtcChannelRequestToken:(ARtcChannel *_Nonnull)rtcChannel;
Token 过期回调
在调用 joinChannelByToken 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中 SDK 可能由于网络原因和服务器失去连接,重连时可能需要新的 Token。 该回调通知 App 需要生成新的 Token,并需调用 renewToken 为 SDK 指定新的 Token。
activeSpeaker
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel activeSpeaker:(NSString * _Nonnull)speakerUid;
监测到活跃用户的回调
该回调获取当前时间段内累积音量最大者。如果用户开启了 enableAudioVolumeIndication 功能,则当音量检测模块监测到频道内有新的活跃用户说话时,会通过本回调返回该用户的 uid。
注意事项:
参数 | 描述 |
---|
rtcChannel | ARtcChannel 类 |
speakerUid | 当前时间段声音最大的用户的 uid。 |
videoSizeChangedOfUid
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel videoSizeChangedOfUid:(NSString *_Nonnull)uid size:(CGSize)size rotation:(NSInteger)rotation;
本地或远端视频大小和旋转信息发生改变回调
参数 | 描述 |
---|
rtcChannel | ARtcChannel 类 |
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;
远端视频状态发生改变回调
remoteAudioStateChangedOfUid
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStateChangedOfUid:(NSString *_Nonnull)uid state:(ARAudioRemoteState)state reason:(ARAudioRemoteStateReason)reason elapsed:(NSInteger)elapsed;
远端音频流状态发生改变回调。
远端用户/主播音频状态发生改变时,SDK 会触发该回调向本地用户报告当前的远端音频流状态。
reportRtcStats
-- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel reportRtcStats:(ARChannelStats * _Nonnull)stats;
当前通话统计回调。 该回调在通话或直播中每两秒触发一次。
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 秒会被触发多次。
参数 | 描述 |
---|
rtcChannel | ARtcChannel 类 |
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 秒会被触发多次。
remoteAudioStats
- (void)rtcChannel:(ARtcChannel * _Nonnull)rtcChannel remoteAudioStats:(ARtcRemoteAudioStats * _Nonnull)stats;
通话中远端音频流的统计信息回调,用于取代 audioQualityOfUid
该回调描述远端用户在通话中端到端的音频流统计信息,针对每个远端用户/主播每 2 秒触发一次。
如果远端同时存在多个用户/主播,该回调每 2 秒会被触发多次。
和 audioTransportStatsOfUid 回调相比,该回调更贴近用户的主观感受。
比如,当网络发生丢包时,因 FEC(Forward Error Correction,向前纠错码)或重传恢复,最终的音频丢帧率不高,则可以认为整个质量较好。