网络质量探测
RTCLib SDK 自 5.1.17 版本起提供了网络质量探测功能。您可以在加入房间前调用 startRTCProbeTest:
方法进行网络质量探测,SDK 会通过代理回调将当前网络质量的相关数据返回,包括往返时延、上下行丢包率、上下行网络带宽等数据。
提示
请在加入房间前完成网络质量探测。SDK 不支持在音视频通话过程中进行网络质量探测。
设置网络探测代理
通过 RCRTCEngine
设置 probeTestDelegate
代理,开始探测后网络质量探测结果在 RCRTCProbeTestDelegate
协议方法中回调。
设置代理
接口原型
Objective C
@property (nonatomic, weak, nullable) id<RCRTCProbeTestDelegate> probeTestDelegate;
实现代理方法
汇报探测状态数据
接 口原型
Objective C
- (void)didReportProbeForms:(NSArray <RCRTCProbeStatusForm *>*)forms;
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
forms | NSArray <RCRTCProbeStatusForm > | 是 | 探测状态报表数据,每 2 秒回调一次,持续 30 秒 |
探测完成
接口原型
Objective C
- (void)didRTCProbeComplete;
探测中断
接口原型
Objective C
- (void)didRTCProbeInterrput:(RCRTCCode)errorCode;
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
errorCode | RCRTCCode | 是 | 中断错误码 |
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
// 设置探测结果回调代理
[[RCRTCEngine sharedInstance] setProbeTestDelegate:self];
// 实现探测结果回调协议
#pragma mark - RCRTCProbeTestDelegate
// 汇报探测状态数据
- (void)didReportProbeForms:(NSArray<RCRTCProbeStatusForm *> *)forms {
// 开始探测后,每 2 秒回调一次报表数据,持续 30 秒
for (RCRTCProbeStatusForm *form in forms) {
// 处理探测数据
}
}
// 探测完成
- (void)didRTCProbeComplete {
NSLog(@"网络质量探测完成");
}
// 探测中断
- (void)didRTCProbeInterrput:(RCRTCCode)errorCode {
NSLog(@"网络质量探测中断,错误码:%ld", (long)errorCode);
}
开启网络探测
在加入房间前,调用 startRTCProbeTest:
开启网络质量探测。开启探测成功后,会通过 RCRTCProbeTestDelegate
协议方法回调来反馈探测结果。每隔约 2 秒回调一次上下行网络的带宽、丢包、网络抖动和往返时延等数据。
接口原型
Objective C
- (void)startRTCProbeTest:(nullable RCRTCOperationCallback)callback;
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
callback | RCRTCOperationCallback | 否 | 结果回调 |
探测特点
- 探测时长:总时长约为 30 秒,30 秒后会自动停止探测并调用
didRTCProbeComplete
回调方法 - 回调频率:每隔约 2 秒回调一次网络质量数据
- 数据内容:上下行网络带宽、丢包率、网络抖动、往返时延等
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
[[RCRTCEngine sharedInstance] startRTCProbeTest:^(BOOL isSuccess, RCRTCCode code) {
}];
提示
在探测自动结束前,如果调用 joinRoom
加入房间操作会打断当前正在进行的网络探测。
停止网络探测
开启探测成功约 30 秒后,会自动停止探测。如果不想等待自动结束,您可以主动调用 stopRTCProbeTest:
方法强制停止探测。
接口原型
Objective C
- (void)stopRTCProbeTest:(nullable RCRTCOperationCallback)callback;
参数说明
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
callback | RCRTCOperationCallback | 否 | 结果回调 |
代码示例
Objective C
#import <RongRTCLib/RongRTCLib.h>
[[RCRTCEngine sharedInstance] stopRTCProbeTest:^(BOOL isSuccess, RCRTCCode code) {
}];