网络质量探测
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) {
}];