鸿蒙开发往期必看:
一分钟了解”纯血版!鸿蒙HarmonyOS Next应用开发!
“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线!(从零基础入门到精通)
“一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路径!
Network Boost Kit(网络加速服务)提供网络加速能力以及网络感知、网络质量预测等能力,通过软、硬、芯、端、管、云等全方位的协同解决方案实现网络资源的调优和加速,从而构筑更可靠、更流畅、更高速的上网体验。
申请权限
场景概述
应用在使用Network Boost Kit能力前需要检查是否已经获取对应权限。如未获得授权,需要声明对应权限。
Network Boost Kit所需权限有:
ohos.permission.GET_NETWORK_INFO:用户获取设备网络信息。
必须手动配置上述权限后才能使用,详细配置参见申请权限步骤。
申请权限步骤
需要在entry/src/main路径下的module.json5中配置所需申请的权限。示例代码如下所示:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.GET_NETWORK_INFO"
}
]
}
}
网络质量评估
场景介绍
应用在订阅网络质量Qos评估后,系统按照一定的周期或Qos变化后回调给应用。回调的Qos信息包括数据传输的链路类型、上下行空口实时带宽、上下行空口实时速率、RTT时延等。
接口说明
具体API说明详见接口文档。
接口名 | 描述 |
---|---|
on(type: 'netQosChange', callback: Callback<Array<NetworkQos>>): void | 订阅Qos信息状态变化。 |
off(type: 'netQosChange', callback?: Callback<Array<NetworkQos>>): void | 取消订阅Qos信息状态变化。 |
开发步骤
- 导入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 BusinessError).code + ', errMessage: ' + (err as BusinessError).message); }
- 当应用业务流程结束,不需要系统侧Qos信息时,通过去订阅的方式取消监听系统Qos信息。
try { netQuality.off('netQosChange'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); }
- 当应用业务流程结束,不需要系统侧Qos信息时,通过去订阅的方式取消监听系统Qos信息。
网络场景识别
场景介绍
应用在订阅网络场景识别后,系统在网络场景实时信息或预测信息发生变化后回调给应用,回调的网络场景信息包括数据传输的链路类型、网络场景类型、数传策略建议、弱信号信息等。
接口说明
具体API说明详见接口文档。
接口名 | 描述 |
---|---|
on(type: 'netSceneChange', callback: Callback<Array<NetworkScene>>): void | 订阅网络场景信息状态变化。 |
off(type: 'netSceneChange', callback?: Callback<Array<NetworkScene>>): void | 取消订阅网络场景信息状态变化。 |
开发步骤
- 导入Network Boost Kit模块。
import { netQuality } from '@kit.NetworkBoostKit'; import { BusinessError } from '@kit.BasicServicesKit';
- 通过订阅的方式获取系统网络场景识别信息。
try { netQuality.on('netSceneChange', (list: Array<netQuality.NetworkScene>) => { if (list.length > 0) { list.forEach((sceneInfo) => { // 网络场景识别回调信息处理 if (sceneInfo.scene == 'congestion') { // 网络拥塞分支处理 } if (sceneInfo.weakSignalPrediction) { // 存在弱信号预测信息,对弱信号预测信息进行处理 } }); } }); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); }
- 当应用业务流程结束,不需要系统侧网络场景识别信息时,通过去订阅的方式取消监听系统网络场景识别信息。
try { netQuality.off('netSceneChange'); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); }
应用传输体验反馈
场景介绍
当应用传输体验发生变化时,应用将传输体验和传输的业务类型信息通过实时反馈接口传输给系统网络业务模块,系统网络业务模块进行精细化调度,实现网络加速。
例如:视频类App播放过程中卡顿,将卡顿信息上报后,Network Boost Kit将信息反馈给系统网络加速模块,该模块会记录播放卡顿信息,并根据当前网络情况,启用网络加速能力。
接口说明
具体API说明详见接口文档。
接口名 | 描述 |
---|---|
reportQoe(appQoe: AppQoe): void | 应用反馈传输体验信息。 |
开发步骤
- 导入Network Boost Kit模块。
import { netQuality } from '@kit.NetworkBoostKit'; import { BusinessError } from '@kit.BasicServicesKit';
- 调用reportQoe接口将应用传输体验信息通知给系统侧。
try{ let serviceType: netQuality.ServiceType = 'shortVideo'; let qoeType: netQuality.BadQoeCause = 'serverErr'; let appQoE: netQuality.AppQoe = { serviceType, qoeType }; netQuality.reportQoe(appQoE); } catch (err) { console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message); }
弱网感知判决
通过网络质量评估和网络场景识别章节,弱网感知判决可归纳为3种方式获取:
方法1(监听系统实时判决):
根据网络场景识别信息,如NetworkScene.scene(weakSignal/congestion)系统直接判决为弱网。
方法2(监听系统预测判决):
根据网络场景识别中的弱信号预测信息,如NetworkScene.weakSignalPrediction系统预测即将进入弱网区域。
方法3(应用自定义判决):
根据网络质量评估信息,如NetworkQos(linkUpBandwidth/linkDownBandwidth/rttMs/linkUpBufferDelayMs/linkUpBufferCongestionPercent),应用自定义门限来判决为弱网。
应用可根据自身业务特点,选择其中一种或多种使用。