跳到主要内容

网络质量探测

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;
参数说明
参数类型是否必填说明
formsNSArray <RCRTCProbeStatusForm >探测状态报表数据,每 2 秒回调一次,持续 30 秒

探测完成

接口原型
Objective C
- (void)didRTCProbeComplete;

探测中断

接口原型
Objective C
- (void)didRTCProbeInterrput:(RCRTCCode)errorCode;
参数说明
参数类型是否必填说明
errorCodeRCRTCCode中断错误码

代码示例

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;

参数说明

参数类型是否必填说明
callbackRCRTCOperationCallback结果回调

探测特点

  • 探测时长:总时长约为 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;

参数说明

参数类型是否必填说明
callbackRCRTCOperationCallback结果回调

代码示例

Objective C
#import <RongRTCLib/RongRTCLib.h>

[[RCRTCEngine sharedInstance] stopRTCProbeTest:^(BOOL isSuccess, RCRTCCode code) {

}];