本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。

一、引言

在当今数字化时代,网络已经成为人们生活和工作中不可或缺的一部分。对于移动设备而言,流畅、高效的网络连接体验更是至关重要。HarmonyOS Next 作为华为鸿蒙系统的下一代演进版本,其网络加速服务为开发者提供了强大的工具,帮助提升应用在网络方面的性能表现。通过 Network Boost Kit,开发者能够更好地应对各种网络环境,为用户带来更优质的网络体验。这不仅有助于提高应用的竞争力,还能满足用户对于快速、稳定网络连接的需求,从而在移动应用市场中脱颖而出。

二、网络加速概述

(一)介绍 Network Boost Kit

Network Boost Kit 是 HarmonyOS Next 中专门用于优化网络性能的一套开发工具包。它就像是一个网络优化的“魔法盒”,隐藏在系统的深处,默默地为应用的网络连接保驾护航。开发者可以利用这个工具包中的各种功能,对应用的网络行为进行精细化的管理和优化。

(二)功能模块列举

  1. 连接迁移:在网络环境发生变化时,例如从 WiFi 切换到蜂窝网络,或者主卡切换到副卡,连接迁移功能能够确保应用的网络连接不受太大影响,实现平滑过渡。这就好比你在开车行驶过程中,从一条高速公路切换到另一条高速公路,连接迁移功能会帮助你自动调整路线,让你的旅程不会因为道路的变化而中断。
  2. 网络场景识别:系统能够实时识别当前的网络场景,比如是处于网络拥塞状态,还是在弱信号区域。这就像给应用装上了一双“眼睛”,可以随时观察周围的网络环境,以便做出相应的决策。
  3. 网络质量评估:可以获取网络的各种质量指标,如上下行带宽、时延等信息。这就如同医生给病人做体检一样,能够准确地了解网络的“健康状况”,为后续的优化提供依据。
  4. 应用传输体验反馈:应用可以将自身的传输体验反馈给系统,系统根据这些反馈信息进行针对性的优化。这就像是你在餐厅用餐后给服务员反馈菜品的口味,餐厅会根据你的意见改进菜品一样,通过这种互动,实现网络加速的良性循环。

    三、开发准备

    (一)权限申请及配置

    在应用使用 Network Boost Kit 能力之前,必须确保已经获取了相应的权限。就像你要进入一个高级俱乐部,需要出示会员卡一样,权限就是应用进入网络加速服务“俱乐部”的门票。所需的权限为 ohos.permission.GET_NETWORK_INFO,它允许应用获取设备的网络信息。配置权限的步骤如下:

  5. 打开项目中的 entry/src/main 路径下的 module.json5 文件。
  6. 在文件中找到 "module" 字段,在其内部添加 "requestPermissions" 数组。
  7. 在数组中添加一个对象,对象的 "name" 属性设置为 "ohos.permission.GET_NETWORK_INFO"。示例代码如下:

    {
    "module": {
    "requestPermissions": [
    {
    "name": "ohos.permission.GET_NETWORK_INFO"
    }
    ]
    }
    }

    四、连接迁移功能

    (一)场景意义

    在现实生活中,我们经常会遇到网络环境变化的情况。比如你在乘坐地铁时,WiFi 信号逐渐变弱,手机自动切换到蜂窝网络。如果没有连接迁移功能,应用可能会出现短暂的卡顿甚至中断连接,影响用户体验。而 HarmonyOS Next 的连接迁移功能就是为了解决这个问题,让应用在网络切换时能够快速适应新的网络环境,保持业务的连续性。

    (二)接口讲解

  8. 订阅连接迁移on(type: 'handoverChange', callback: Callback<HandoverInfo>): void 这个接口用于订阅连接迁移通知。当系统检测到网络连接即将发生迁移时,会调用传入的回调函数,并传递 HandoverInfo 对象。这个对象包含了连接迁移的相关信息,如迁移是否开始(handoverStart)和迁移是否完成(handoverComplete)等。
  9. 取消订阅连接迁移off(type: 'handoverChange', callback?: Callback<HandoverInfo>): void 当应用不再需要接收连接迁移通知时,可以使用这个接口取消订阅。如果不传递回调函数参数,则会取消所有与该类型相关的订阅。

    (三)开发步骤示例

  10. 首先,导入 Network Boost Kit 模块:

    import { netHandover } from '@kit.NetworkBoostKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  11. 然后,通过订阅的方式获取连接迁移信息:

    try {
    netHandover.on('handoverChange', (info: netHandover.HandoverInfo) => {
    if (info.handoverStart) {
    // 连接迁移开始回调,应用按照 HandoverStart 的建议调整数传策略
    console.info('handover start');
    } else if (info.handoverComplete) {
    // 连接迁移完成回调,应用按照 HandoverComplete 的建议进行调速和重建恢复
    console.info('handover complete');
    }
    });
    } catch (err) {
    console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
    }
  12. 当应用业务流程结束,不需要系统侧连接迁移信息时,取消监听:

    try {
    netHandover.off('handoverChange');
    } catch (err) {
    console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
    }

    五、网络场景识别与质量评估

    (一)场景介绍

    网络场景识别就像是给应用赋予了“环境感知”能力。例如,在一个大型商场中,WiFi 用户众多,网络可能会出现拥塞情况。应用通过网络场景识别功能,可以及时了解到当前处于拥塞状态,从而调整数据传输策略,比如降低视频播放的分辨率,以保证播放的流畅性。网络质量评估则是进一步量化网络的状况,让应用能够根据具体的指标进行优化。

    (二)接口说明

  13. 订阅网络场景信息状态变化on(type: 'netSceneChange', callback: Callback<Array<NetworkScene>>): void 应用调用这个接口后,当系统网络场景的实时信息或预测信息发生变化时,会回调传入的函数,并传递包含 NetworkScene 对象数组的参数。NetworkScene 对象包含了网络场景的各种信息,如场景类型(scene)、弱信号预测信息(weakSignalPrediction)等。
  14. 取消订阅网络场景信息状态变化off(type: 'netSceneChange', callback?: Callback<Array<NetworkScene>>): void 用于取消对网络场景信息状态变化的订阅。

    (三)开发流程展示

  15. 导入相关模块:

    import { netQuality } from '@kit.NetworkBoostKit';
    import { BusinessError } from '@kit.BasicServicesKit';
  16. 订阅网络场景识别信息:

    try {
    netQuality.on('netSceneChange', (list: Array<netQuality.NetworkScene>) => {
    if (list.length > 0) {
    list.forEach((sceneInfo) => {
    // 网络场景识别回调信息处理
    if (sceneInfo.scene == 'congestion') {
    // 网络拥塞分支处理
    console.log('网络拥塞,采取相应措施');
    }
    if (sceneInfo.weakSignalPrediction) {
    // 存在弱信号预测信息,对弱信号预测信息进行处理
    console.log('预测将进入弱信号区域,提前准备');
    }
    });
    }
    });
    } catch (err) {
    console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
    }
  17. 取消订阅(当不再需要时):

    try {
    netQuality.off('netSceneChange');
    } catch (err) {
    console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
    }

    通过以上对 HarmonyOS Next 网络加速服务基础功能的全面解析,我们开发者可以初步掌握如何利用 Network Boost Kit 提升应用的网络性能。在后续的开发中,还可以进一步探索其更高级的功能,为用户打造更加出色的网络体验。希望这篇文章能为大家在 HarmonyOS Next 网络开发的道路上点亮一盏明灯,祝大家开发顺利!


SameX
1 声望0 粉丝