前言

了解当前网络类型(WiFi或蜂窝)对应用行为优化很重要,如大文件下载在WiFi下自动进行,蜂窝网络下提示用户。@pura/harmony-utilsNetworkUtil 封装了网络类型判断方法。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

在这里插入图片描述

一、NetworkUtil类型核心API

NetworkUtil 提供了以下网络类型判断方法:

方法 说明 返回类型 使用场景
isWifiConnected() 是否WiFi连接 boolean WiFi场景判断
isCellularConnected() 是否蜂窝连接 boolean 流量场景判断
isEthernetConnected() 是否以太网连接 boolean 有线网络判断
getConnectionType() 获取连接类型 string 网络类型展示

1.1 核心特性

  • 简洁易用:封装复杂API为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 快速响应:同步返回结果,无需异步等待

1.2 网络类型与应用策略

网络类型 下载策略 视频质量 数据同步
WiFi 自动下载 高清 自动同步
蜂窝 提示用户 标清 手动同步
以太网 自动下载 高清 自动同步

二、完整使用步骤

2.1 安装依赖

ohpm install @pura/harmony-utils

2.2 判断WiFi连接

import { NetworkUtil } from '@pura/harmony-utils';

Button('判断WiFi连接')
  .width('100%')
  .onClick(() => {
    try {
      let isWifi = NetworkUtil.isWifiConnected();
      this.result = `WiFi: ${isWifi ? '已连接 📶' : '未连接'}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

2.3 判断蜂窝连接

Button('判断蜂窝连接')
  .width('100%')
  .onClick(() => {
    try {
      let isCellular = NetworkUtil.isCellularConnected();
      this.result = `蜂窝: ${isCellular ? '已连接 📡' : '未连接'}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

在这里插入图片描述

三、完整页面示例

import { NetworkUtil } from '@pura/harmony-utils';

@Entry
@Component
struct NetworkTypeDemo {
  @State result: string = '';

  build() {
    Column({ space: 12 }) {
      Button('获取网络类型').width('100%').onClick(() => {
        try {
          let isWifi = NetworkUtil.isWifiConnected();
          let isCellular = NetworkUtil.isCellularConnected();
          this.result = `WiFi: ${isWifi ? '是' : '否'}\n蜂窝: ${isCellular ? '是' : '否'}`;
        } catch (e) { this.result = '异常: ' + e; }
      });
      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 智能下载策略

import { NetworkUtil, ToastUtil } from '@pura/harmony-utils';

async function smartDownload(url: string) {
  if (NetworkUtil.isWifiConnected()) {
    await downloadFile(url);
  } else if (NetworkUtil.isCellularConnected()) {
    ToastUtil.showToast('当前使用蜂窝网络,下载将消耗流量');
  } else {
    ToastUtil.showToast('网络不可用');
  }
}

4.2 视频质量自适应

function getVideoQuality(): string {
  return NetworkUtil.isWifiConnected() ? '1080p' : '720p';
}

五、注意事项

  1. 下载策略:WiFi下自动下载,蜂窝下提示用户
  2. 视频播放:WiFi下自动高清,蜂窝下默认标清
  3. 数据同步:WiFi下自动同步,蜂窝下手动同步
  4. 初始化依赖:使用前需确保 AppUtil.init() 已调用
  5. 网络切换:网络类型可能随时变化

六、常见问题

Q1: WiFi和蜂窝同时连接时返回什么?

通常WiFi优先,isWifiConnected() 返回true。

Q2: 如何监听网络类型变化?

使用 NetworkUtil.onNetworkChange() 订阅网络变化事件。

Q3: getConnectionType()返回什么格式?

返回网络类型字符串,如 “WiFi”、“Cellular”、“Ethernet” 等。

Q4: 蜂窝网络下如何判断是4G还是5G?

使用 NetworkUtil 的蜂窝详情方法或5G检测方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

NetworkUtil 的网络类型判断方法让应用能够根据网络类型做出智能决策。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理利用网络类型信息,既节省用户流量又提升使用体验。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐