uni.getWifiList() 在 App 端默认不工作,iOS 返回空数组或直接失败,Android 需手动补全扫描逻辑且受系统限制;iOS 应跳转设置页,Android 推荐使用插件或原生增强。

uni.getWifiList() 在 App 端根本不会返回真实 WiFi 列表
直接说结论:uni.getWifiList() 在 iOS 和 Android 的 uni-app App 端(即 uni-app 编译为原生 App)**默认不工作**,调用后 success 回调可能触发,但 wifiList 字段为空数组或结构异常;iOS 上甚至可能直接进 fail(错误码 10005 或无权限提示)。这是因为该 API 依赖原生层的 WiFi 扫描能力,而 uni-app 官方插件未默认集成完整权限与扫描逻辑,尤其在 iOS 上受严格限制。
常见错误现象:uni.getWifiList() 返回空数组、wifiList 为 undefined、控制台报 getWifiList:fail not supported 或 fail:not authorized;Android 上即使授权成功,也可能因未调用 startWifi 或后台扫描被系统限制而无结果。
- iOS 必须开启
Access WiFi InformationCapability,并在Info.plist中添加NSLocationWhenInUseUsageDescription(WiFi 扫描需定位权限) - Android 需动态申请
android.permission.ACCESS_FINE_LOCATION(Android 10+ 还需ACCESS_WIFI_STATE和CHANGE_WIFI_STATE) - 必须先调用
uni.startWifi(),且确保 WiFi 已开启(uni.getConnectedWifi()只查连接状态,不触发扫描)
Android 端可用但需手动补全原生能力
uni-app 官方 SDK 对 Android 的 WiFi 扫描支持不完整:默认 uni.getWifiList() 不会主动触发扫描,仅返回缓存(通常为空)。要拿到真实列表,必须在原生层调用 WifiManager.startScan(),再监听 SCAN_RESULTS_AVAILABLE_ACTION 广播。
实操建议:
- 使用 「WiFi 扫描增强」插件(DCloud 插件市场 ID
2028),它封装了startScan+ 广播监听 + 权限适配,提供scanWifi()方法 - 调用前确保已开启 WiFi:
uni.setWifiEnabled({enable: true}),否则扫描失败 - 避免高频调用:Android 系统限制 2 分钟内最多扫描 4 次,超频会静默失败
- 返回的 SSID 可能含不可见字符(如
\u200e),建议用.trim().replace(/[\u200e\u200f\u202a-\u202e]/g, '')清洗
iOS 端基本不可行,替代方案只有「跳转系统设置」
iOS 自 iOS 13 起彻底禁止第三方 App 主动扫描 WiFi 列表(即使有权限也不返回结果),Apple 明确要求「只能连接已知网络」。uni-app 的 uni.getWifiList() 在 iOS App 上注定为空,任何 JS 层 hack 都无效。
可行路径只剩一个:
- 检测到 iOS 环境时,放弃扫描,改用
uni.openSetting()跳转到系统设置页,引导用户手动操作 - 可配合
uni.getConnectedWifi()获取当前已连接的 SSID 和信号强度(这个在 iOS 是可用的) - 若业务强依赖 WiFi 选择(如设备配网),必须改用蓝牙或扫码方式,而非依赖 WiFi 列表
注意:uni.openSetting() 在 iOS 上无法指定跳转到 WiFi 子页,只能打开主设置页,用户需自行寻找。
别把 uni.connectWifi() 当成「连接任意网络」的入口
很多开发者以为拿到列表就能连,但 uni.connectWifi() 在 App 端有严重限制:iOS 仅支持连接「已配置过密码的网络」(即用户曾在系统里输过密码),Android 则要求传入正确的 password 且网络在当前扫描范围内——而你很可能根本没扫到。
关键点:
-
uni.connectWifi()不会自动触发扫描,它只尝试连接,失败时不会补充扫描动作 - 密码错误时 Android 返回
fail:invalid password,iOS 直接静默失败,无明确错误码 - 连接后必须监听
uni.onWifiConnected,不能只靠回调判断是否成功(某些场景回调不触发) - 企业级应用若需稳定配网,应优先考虑
Wi-Fi Protected Setup (WPS)或专用 SDK(如乐鑫 ESP-IDF 提供的配网库)
真正在生产环境跑通 WiFi 列表 + 连接,几乎必然要绕开 uni-app 默认 API,接入原生模块或成熟第三方 SDK。别在 H5 思维里硬扛 App 原生限制。


















