uni-app 获取设备网络状态getNetworkType 得到unknown

uni-app 获取设备网络状态getNetworkType 得到unknown

### 表格信息

| 项目       | 详情               |
|------------|--------------------|
| 产品分类   | uniapp/H5          |
| PC开发环境操作系统 | Windows            |
| PC开发环境操作系统版本号 | windows11          |
| HBuilderX类型 | 正式               |
| HBuilderX版本号 | 3.3.2              |
| 浏览器平台 | 微信内置浏览器     |
| 浏览器版本 | 96.0.4664.110      |
| 项目创建方式 | HBuilderX          |

### Markdown 文档

#### 操作步骤:

https://hellouniapp.dcloud.net.cn/pages/API/get-network-type/get-network-type 官方示例,在不同手机上获取的状态异常


#### 预期结果:

按照真实的网络状态显示。 或者区分网络类型,【有线】,【无线】,【蜂窝数据】


#### 实际结果:

获取网络状态unknown


#### bug描述:

获取网络状态不准确,不同手机,不同系统适配有问题,获取到的状态为"unknown"。 手机打开数据流量,关闭wifi。有的手机获取到的状态为“unknown”。


更多关于uni-app 获取设备网络状态getNetworkType 得到unknown的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

h5 不能获取,app才可以

更多关于uni-app 获取设备网络状态getNetworkType 得到unknown的实战教程也可以访问 https://www.itying.com/category-93-b0.html


有的手机获取到的状态为“unknown”。什么手机?型号?系统版本
unknown Android 下不常见的网络类型

为什么安卓可以拿到,苹果拿不到

在微信内置浏览器环境下,uni.getNetworkType() 返回 unknown 是常见问题,主要原因是浏览器环境限制。

核心原因: 微信内置浏览器(以及其他多数浏览器)出于隐私和安全考虑,严格限制了获取精确网络类型的能力。浏览器通常只能检测到设备是否在线,而无法区分具体是 WiFi、蜂窝数据还是有线网络。

解决方案:

  1. 使用 uni.onNetworkStatusChange 监听网络变化 虽然 getNetworkType 可能返回 unknown,但网络连接状态的变化监听相对更可靠。可以结合使用:

    // 监听网络状态变化
    uni.onNetworkStatusChange((res) => {
        console.log('isConnected:', res.isConnected); // 网络是否连接
        console.log('networkType:', res.networkType); // 网络类型,可能仍为 unknown
    });
    
    // 主动获取一次
    uni.getNetworkType({
        success: (res) => {
            console.log(res.networkType);
        }
    });
    
  2. 区分 H5 与 App 平台 在 App 平台(打包成原生应用)下,getNetworkType 通常能正常获取网络类型。但在 H5 平台(包括微信浏览器)能力受限。建议根据平台做不同处理:

    // #ifdef H5
    // H5 平台处理逻辑:主要依赖 isConnected 判断是否联网
    // #endif
    
    // #ifdef APP-PLUS
    // App 平台可正常使用 networkType
    // #endif
回到顶部