Teste a qualidade da rede local antes de entrar em um canal para detectar e resolver possíveis problemas antecipadamente.
Introdução ao recurso
O ARTC SDK permite testar a qualidade da rede local antes da entrada em um canal. Assim, você identifica e resolve possíveis problemas com antecedência, evitando travamentos, perda de quadros e interrupções de áudio durante chamadas de voz e vídeo em tempo real.
Código de exemplo
Android: Android/ARTCExample/AdvancedUsage/src/main/java/com/aliyun/artc/api/advancedusage/PreJoinChannelTest/PreJoinChannelTestActivity.java
iOS: iOS/ARTCExample/AdvancedUsage/PreJoinChannelTest/PreJoinChannelTestVC.swift
HarmonyOS:Harmony/ARTCExample/entry/src/main/ets/pages/advancedusage/PreJoinChannelTestPage.ets
Como funciona
O exemplo a seguir usa iOS. O ARTC SDK fornece o método startLastmileDetect para testar a qualidade da rede local antes de entrar em um canal e retornar pontuações de qualidade e estatísticas. O procedimento é o seguinte:
Antes de entrar em um canal, chame
startLastmileDetectpara iniciar o teste de qualidade de rede. Configure os parâmetros de teste emAliRtcNetworkQualityProbeConfig, incluindo o alvo do teste e a taxa de bits máxima esperada.-
O SDK aciona os seguintes callbacks:
onLastmileDetectResultWithQuality: acionado 2 segundos após a chamada destartLastmileDetect. Retorna pontuações das redes de upstream e downstream, refletindo uma avaliação subjetiva.onLastmileDetectResultWithBandWidth: acionado 30 segundos após a chamada destartLastmileDetect. Retorna dados em tempo real sobre as condições da rede, incluindo taxa de perda de pacotes, jitter de rede e largura de banda disponível, refletindo uma avaliação objetiva.
Após obter as estatísticas de qualidade da rede, chame
stopLastmileDetectpara interromper o teste de qualidade da rede local.
Exemplos de código
Iniciar um teste de qualidade de rede
Android
Chame a operação startNetworkQualityProbeTest:
public abstract int startNetworkQualityProbeTest(AlirtcNetworkQualityProbeConfig config);
iOS
Chame a operação startLastmileDetect:
- (int)startLastmileDetect:(AliRtcNetworkQualityProbeConfig *_Nonnull)config;
Windows
AliRtcNetworkProbeConfig config;
config.probeUplink = true; // Test the upstream network
config.probeDownlink = true; // Test the downstream network
rtcEngine.startLastmileDetect(config);
Receber mensagens de callback
Android
onNetworkQualityProbeTest: acionado cerca de 3 segundos após o início do teste. Fornece informações iniciais sobre a qualidade da rede.
onNetworkQualityProbeTestResult: acionado cerca de 30 segundos após o início do teste. Fornece detalhes da qualidade da rede.
public void onNetworkQualityProbeTest(AliRtcNetworkQuality quality){}
public void onNetworkQualityProbeTestResult(int code, AliRtcEngine.AlirtcNetworkQualityProbeResult result){}
iOS
onLastmileDetectResultWithQuality: acionado cerca de 2 segundos após o início do teste. Fornece informações iniciais sobre a qualidade da rede.
onLastmileDetectResultWithBandWidth: acionado cerca de 30 segundos após o início do teste. Fornece detalhes da qualidade da rede.
- (void)onLastmileDetectResultWithQuality:(AliRtcNetworkQuality)networkQuality;
- (void)onLastmileDetectResultWithBandWidth:(int)code result:(AliRtcNetworkQualityProbeResult* _Nonnull)result;
Windows
// Handle network quality testing callback (replace onNetworkQualityChanged)
void OnLastmileDetectResultWithQuality(AliEngineNetworkQuality networkQuality) override {
std::string message = getNetworkQualityString(networkQuality);
networkTestResultText += "Network testing quality: " + message + "\n";
std::cout << "=== Network quality testing callback ===" << std::endl;
std::cout << networkTestResultText << std::endl;
}
// Handle lastmile network detection result callback
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;
}
Interromper a detecção de qualidade da rede
Android
Chame a operação stopNetworkQualityProbeTest:
public abstract int stopNetworkQualityProbeTest();
iOS
Chame a operação stopLastmileDetect:
- (int)stopLastmileDetect;
Windows
rtcEngine.stopLastmileDetect();