在加入频道或切换角色为主播前,进行网络质量探测,可以判断或预测用户当前的网络状况是否良好,可以满足音频码率或者当前选定的视频属性的目标码率。
在对网络质量要求高的场景下,Agora 建议在加入频道前进行探测,保证通信顺畅。
请确保你已完成环境准备、安装包获取等步骤,详见集成客户端。
在用户加入频道或上麦前,调用 startLastmileProbeTest
进行网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延。
启用该方法后,SDK 会依次返回如下 2 个回调:
lastmileQuality
:约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近主观感受lastmileProbeResult
:约 30 秒内返回。该回调通过客观数据反馈上下行网络质量,更客观// swift
// 配置一个 LastmileProbeConfig 实例。参数可参考 API 文档
let config = AgoraLastmileProbeConfig(
// 确认探测上行网络质量
probeUplink: true,
// 确认探测下行网络质量
probeDownlink: true,
// 期望的最高发送码率,单位为 Kbps,范围为 [100, 5000]
expectedUplinkBitrate: 1000,
// 期望的最高接收码率,单位为 Kbps,范围为 [100, 5000]
expectedDownlinkBitrate: 1000)
// 加入频道前开始 Last-mile 网络探测
agoraKit.startLastmileProbeTest(config)
// 注册回调
// 开始 Last-mile 网络探测后,约 2 秒后会发生该回调
// quality 即为当前检测到的 quality 类型,可以根据此参数执行相关逻辑
func rtcEngine(_ engine: AgoraRtcEngineKit, lastmileQuality quality: AgoraNetworkQuality) {
}
// 开始 Last-mile 网络探测后,约 30 秒后会发生该回调
// result 即为当前探测到的网络质量结果,可以根据此类执行相关逻辑
func rtcEngien(_ engine: AgoraRtcEngineKit, lastmileProbeResult result: AgoraLastmileProbeResult){
// (1)可以选择在回调内部结束测试。在测试结束前,Agora 建议不要调用其他 API 方法
agoraKit.stopLastmileProbeTest()
}
// (2)也可以选择在其他时候结束测试。在测试结束前,Agora 建议不要调用其他 API 方法
agoraKit.stopLastmileProbeTest()
// objective-c
// 配置一个 LastmileProbeConfig 实例。参数可参考 API 文档
AgoraLastmileProbeConfig *config = [[AgoraLastmileProbeConfig alloc] probeUplink: YES probeDownlink: YES expectedUplinkBitrate: 1000 expectedDownlinkBitrate: 1000];
// 加入频道前开始 Last-mile 网络探测
[agoraKit startLastmileProbeTest: config];
// 注册回调
// 开始 Last-mile 网络探测后,约 2 秒后会发生该回调
// quality 即为当前检测到的 quality 类型,可以根据此参数执行相关逻辑
- (void)rtcEngine:(AgoraRtcEngine * _Nonnull)engine lastmileQuality: (AgoraNetworkQuality)quality {
}
// 开始 Last-mile 网络探测后,约 30 秒后会发生该回调
// result 即为当前探测到的网络质量结果,可以根据此类执行相关逻辑
- (void)rtcEngine:(AgoraRtcEngine * _Nonnull)engine lastmileProbeResult: (AgoraLastmileProbeResult)result {
// (1)可以选择在回调内部结束测试。在测试结束前,Agora 建议不要调用其他 API 方法
[agoraKit stopLastmileProbeTest];
}
// (2)也可以选择在其他时候结束测试。在测试结束前,Agora 建议不要调用其他 API 方法
[agoraKit stopLastmileProbeTest];
lastmileQuality
回调第一次报告的结果有一定概率是 unknown, 可通过之后的几次回调获得结果。