通话前进行网络质量检测

更新时间:
复制为 MD 格式

本文将为您介绍如何在通话前进行网络质量检测。

功能介绍

ARTC SDK 提供通话前进行网络质量检测的功能,用于在加入频道前探测本地网络质量。这一功能对于保障实时音视频通话的稳定性与流畅性至关重要,能够提前发现潜在的网络问题,让用户及时采取措施优化网络,避免在通话过程中出现卡顿、掉帧、声音中断等不良体验。

示例代码

Android端进行网络质量检测Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/PreJoinChannelTest/PreJoinChannelTestActivity.java

iOS端进行网络质量检测iOS/ARTCExample/AdvancedUsage/PreJoinChannelTest/PreJoinChannelTestVC.swift

Harmony端通话前网络质量检测Harmony/ARTCExample/entry/src/main/ets/pages/advancedusage/PreJoinChannelTestPage.ets

功能原理

image

iOS接口为例,ARTC SDK提供了startLastmileDetect方法,用于在加入频道之前探测本地网络质量,并返回有关网络质量评分和网络质量统计信息。参考以下步骤进行网络质量探测:

  1. 在加入频道之前,调用startLastmileDetect启动网络探测。您需要在AliRtcNetworkQualityProbeConfig中设置探测对象和预期最高码率。

  2. 调用该方法后,SDK会触发以下回调:

    • onLastmileDetectResultWithQuality:在调用startLastmileDetect方法2秒后触发。该回调通过打分反馈上下行网络质量,更贴近主观感受。

    • onLastmileDetectResultWithBandWidth:在调用startLastmileDetect方法30秒后触发。该回调返回网络状况的实时统计数据,包括丢包率、网络抖动和可用带宽,更加客观。

  3. 获取网络质量统计信息后,调用stopLastmileDetect方法停止本地网络检测。

代码示例

一、发起网络质量探测

Android

startNetworkQualityProbeTest - 开启网络质量探测

public abstract int startNetworkQualityProbeTest(AlirtcNetworkQualityProbeConfig config);

iOS

startLastmileDetect - 开始网络质量探测

- (int)startLastmileDetect:(AliRtcNetworkQualityProbeConfig *_Nonnull)config;

Harmony

const config: AliRtcNetworkProbeConfig = new AliRtcNetworkProbeConfig();
config.probeUplink = true; // 是否探测上行网络
config.probeDownlink = true; // 是否探测下行网络
this.rtcEngine.startLastmileDetect(config);

二、接收网络质量探测回调

Android

onNetworkQualityProbeTest - 网络质量探测的回调,开始探测3s左右提供该回调

onNetworkQualityProbeTestResult - 网络质量探测的结果回调,探测30s左右提供该回调

public void onNetworkQualityProbeTest(AliRtcNetworkQuality quality){}

public void onNetworkQualityProbeTestResult(int code, AliRtcEngine.AlirtcNetworkQualityProbeResult result){}

iOS

onLastmileDetectResultWithQuality - 网络质量探测回调

onLastmileDetectResultWithBandWidth - 网络质量探测结果的回调

- (void)onLastmileDetectResultWithQuality:(AliRtcNetworkQuality)networkQuality;

- (void)onLastmileDetectResultWithBandWidth:(int)code result:(AliRtcNetworkQualityProbeResult* _Nonnull)result;

Harmony

// 网络质量变化回调
this.rtcEngineEventListener.onNetworkQualityChanged((uid: string, upQuality: AliRtcNetworkQuality,
   downQuality: AliRtcNetworkQuality) => {
     const message = this.getNetworkQualityString(upQuality);
     this.networkTestResultText += `网络质量: ${message}\n`;
   });

// lastmile 网络探测结果回调
this.rtcEngineEventListener.onLastmileDetectResultWithBandWidth((code: number,
   result: AliRtcNetworkProbeResult) => {
     const message = this.buildNetworkTestResultMessage(code, result);
     this.networkTestResultText += `${message}\n`;
   });

三、停止网络质量探测

Android

stopNetworkQualityProbeTest - 停止网络质量探测

public abstract int stopNetworkQualityProbeTest();

iOS

stopLastmileDetect - 停止网络质量探测

- (int)stopLastmileDetect;

Harmony

this.rtcEngine.stopLastmileDetect();