跳到主要内容

网络质量探测

自 5.1.17 起, RTCLib SDK 提供了一个 startRTCProbeTest: 方法,支持用户在加入房间前进行网络质量探测,然后通过代理回调将当前网络质量的相关数据,包括往返时延、上下行丢包率、上下行网络带宽等数据返回给上层应用。

提示

请在加入房间前完成网络质量探测。SDK 不支持在音视频通话过程中进行网络质量探测。

设置 RTC 网络探测回调事件

通过 RCRTCEngine 设置 probeTestDelegate 代理,开始探测后网络质量探测结果在 RCRTCProbeTestDelegate 协议方法里回调。

示例代码:

//设置探测结果回调代理
[[RCRTCEngine sharedInstance] setProbeTestDelegate:self];

//实现探测结果回调协议
#pragma mark - RCRTCProbeTestDelegate

/*!
汇报探测状态数据
*/
- (void)didReportProbeForms:(NSArray <RCRTCProbeStatusForm *>*)forms {
//开始探测后,每 2s 回调一次报表数据,持续 30s。
NSLog(@"%@",forms);
}

/*!
探测完成
*/
- (void)didRTCProbeComplete {
NSLog(@"探测完成");
}

/*!
探测中断
*/
- (void)didRTCProbeInterrput:(RCRTCCode)errorCode {
NSLog(@"探测中断");
}

开启 RTC 网络探测

加入房间前,调用 startRTCProbeTest: 开启网络质量探测。开启探测成功后,会通过 RCRTCProbeTestDelegate 协议方法回调来反馈探测结果。每隔约 2 秒回调一次上下行网络的带宽、丢包、网络抖动和往返时延等数据。

探测总时长约为 30 秒,30 秒后会自动停止探测并调用 didRTCProbeComplete 回调方法通知上层应用探测结束。

提示

在探测自动结束 didRTCProbeComplete 前,如调用 joinRoom 加房间操作会打断当前正在进行的 RTC 网络探测。

示例代码:

[[RCRTCEngine sharedInstance] startRTCProbeTest:^(BOOL isSuccess, RCRTCCode code) {
if (isSuccess) {
NSLog(@"调用成功 code:%@",@(code));
}
else {
NSLog(@"调用失败 code:%@",@(code));
}
}];

停止 RTC 网络探测

开启探测成功约 30 秒后,会自动停止探测,如果不想等待自动结束,可主动调用 stopRTCProbeTest: 方法强制停止探测。

[[RCRTCEngine sharedInstance] stopRTCProbeTest:^(BOOL isSuccess, RCRTCCode code) {
if (isSuccess) {
NSLog(@"停止成功 code:%@",@(code));
}
else {
NSLog(@"停止失败 code:%@",@(code));
}
}];