如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。
1、概述
HarmonyOS提供了一套网络网络质量管理的套件(Network Boost Kit),它可以实现网络加速、网络感知、网络质量预测等能力,通过软、硬、芯、端、管、云等全方位的协同解决方案实现网络资源的调优和加速,构筑更可靠、更流畅、更高速的上网体验。
在使用相关API时,需要申请设备网络信息权限:ohos.permission.GET_NETWORK_INFO。需要在entry/src/main路径下的module.json5中配置所需申请的权限。示例代码如下所示:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.GET_NETWORK_INFO"
}
]
}
}
2、网络质量状况评估
我们可以通过订阅网络质量Qos评估来实现监听网络质量问题,系统按照一定的周期或Qos变化后回调给应用。回调的Qos信息包括数据传输的链路类型、上下行空口实时带宽、上下行空口实时速率、RTT时延等。接口定义如下:
// 订阅Qos信息状态变化
on(type: 'netQosChange', callback: Callback<Array<NetworkQos>>): void
// 取消订阅Qos信息状态变化
off(type: 'netQosChange', callback?: Callback<Array<NetworkQos>>): void
其中NetWorkQos对象是系统返回的网络质量信息。相关结构定义如下:
class NetworkQos {
pathType: PathType // 相应的数据路径上的网络质量信息。
linkUpBandwidth: RateBps // 上行带宽信息。
linkDownBandwidth: RateBps // 下行带宽信息。
linkUpRate: RateBps // 上行速率。
linkDownRate: RateBps // 下行速率。
rttMs: number // RTT时延,取值范围是任意正数。
linkUpBufferDelayMs: number //上行发送空口缓冲时延,取值范围是任意正数。
linkUpBufferCongestionPercent: number // 上行发送空口缓冲时延占总缓冲时间的比例,取值范围[0, 100]。
}
enum PathType {
CELLULAR_PRIMARY = 0 // 蜂窝主卡。
CELLULAR_SECONDARY = 1 // 蜂窝副卡。
WIFI_PRIMARY = 2 // 主WiFi。
WIFI_SECONDARY = 3 // 辅WiFi。
}
type RateBps = number // 带宽或速率的抽象表示。
示例代码如下:
// 导入NetWork Boost Kit模块
import { netQuality } from '@kit.NetworkBoostKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 订阅获取系统Qos信息
// .....
try {
netQuality.on('netQosChange', (list: Array<netQuality.NetworkQos>) => {
if (list.length > 0) {
list.forEach((qos) => {
// 回调信息处理
});
}
});
} catch (err) {
console.error('errCode: ' + (err as BusinessErr