本トピックでは、通話前にネットワーク品質をテストする方法について説明します。
機能紹介
ARTC SDK は、チャンネルに参加する前にローカルのネットワーク品質をテストする機能をサポートしています。これにより、潜在的なネットワーク問題を事前に特定し、ネットワークを最適化することで、通話中のカクつき、コマ落ち、音声の中断を防ぎ、安定したスムーズなリアルタイムの音声・映像コミュニケーションを確保できます。
サンプルコード
Android でのネットワーク品質検知: Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/PreJoinChannelTest/PreJoinChannelTestActivity.java
iOS でのネットワーク品質検知の実行: iOS/ARTCExample/AdvancedUsage/PreJoinChannelTest/PreJoinChannelTestVC.swift
仕組み
iOS プラットフォームを例として、ARTC SDK はチャンネルに参加する前にローカルのネットワーク品質を検知するための startLastmileDetect メソッドを提供します。このメソッドは、ネットワーク品質のスコアと統計情報を返します。手順は次のとおりです:
チャンネルに参加する前に、
startLastmileDetectを呼び出してテストを開始します。AliRtcNetworkQualityProbeConfigで、テスト対象と予想される最大ビットレートを設定します。このメソッドを呼び出すと、SDK は次のコールバックをトリガーします:
onLastmileDetectResultWithQuality:startLastmileDetectの 2 秒後にトリガーされます。アップストリームとダウンストリームのネットワーク品質スコアを返し、主観的な評価を反映します。onLastmileDetectResultWithBandWidth:startLastmileDetectの 30 秒後にトリガーされます。パケット損失率、ネットワークジッター、利用可能な帯域幅などのリアルタイムのネットワーク統計情報を返し、客観的な評価を反映します。
ネットワーク品質の統計情報を取得した後、
stopLastmileDetectを呼び出してテストを停止します。
コード例
ネットワーク品質テストの開始
Android
startNetworkQualityProbeTest 操作を呼び出します:
public abstract int startNetworkQualityProbeTest(AlirtcNetworkQualityProbeConfig config);iOS
startLastmileDetect - ラストマイルのネットワーク品質検知を開始
- (int)startLastmileDetect:(AliRtcNetworkQualityProbeConfig *_Nonnull)config;Windows
AliRtcNetworkProbeConfig config;
config.probeUplink = true; // アップストリームネットワークをプローブ
config.probeDownlink = true; // ダウンストリームネットワークをプローブ
rtcEngine.startLastmileDetect(config);II. ネットワーク品質検知コールバックの受信
Android
onNetworkQualityProbeTest:テスト開始から約 3 秒後にトリガーされ、ネットワーク品質の初期的な情報を提供します。
onNetworkQualityProbeTestResult — ネットワーク品質プローブの結果を返すコールバック。このコールバックは、プローブ開始から約 30 秒後にトリガーされます。
public void onNetworkQualityProbeTest(AliRtcNetworkQuality quality){}
public void onNetworkQualityProbeTestResult(int code, AliRtcEngine.AlirtcNetworkQualityProbeResult result){}iOS
onLastmileDetectResultWithQuality - ネットワーク品質検知結果のコールバック
onLastmileDetectResultWithBandWidth:テスト開始から約 30 秒後にトリガーされ、ネットワーク品質の詳細を提供します。
- (void)onLastmileDetectResultWithQuality:(AliRtcNetworkQuality)networkQuality;
- (void)onLastmileDetectResultWithBandWidth:(int)code result:(AliRtcNetworkQualityProbeResult* _Nonnull)result;Windows
// ネットワーク品質検知コールバックの処理 (onNetworkQualityChanged を置き換え)
void OnLastmileDetectResultWithQuality(AliEngineNetworkQuality networkQuality) override {
std::string message = getNetworkQualityString(networkQuality);
networkTestResultText += "Network detection quality: " + message + "\n";
std::cout << "=== Network quality detection callback ===" << std::endl;
std::cout << networkTestResultText << std::endl;
}
// ラストマイルネットワーク検知結果コールバックの処理
void onLastmileDetectResultWithBandWidth(int code,
const AliRtcNetworkProbeResult& result) override {
std::string message = buildNetworkTestResultMessage(code, result);
networkTestResultText += message + "\n";
std::cout << "=== Lastmile detection result callback ===" << std::endl;
std::cout << networkTestResultText << std::endl;
}ネットワーク品質検知の停止
Android
stopNetworkQualityProbeTest - ネットワーク品質プローブテストを停止
public abstract int stopNetworkQualityProbeTest();iOS
stopLastmileDetect 操作を呼び出します:
- (int)stopLastmileDetect;Windows
rtcEngine.stopLastmileDetect();