更新记录
1.0.8.1(2025-10-23) 下载此版本
- 修复utssdk/app-ios/src/index.swift:44:39: error: cannot find type 'WifiFail' in scope
- 等待官方半个月没人回复,只好自己解决官方苹果ios打包时报错的问题。 自己测试过了才发出来,有问题及时说声我及时修改
平台兼容性
uni-app(4.71)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| - | - | × | × | √ | √ | 4.4 | 12 | × |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| × | × | × | × | × | × | × | × | × | × | × |
只是在官方1.0.8版本上进行了修复ios打包的报错问题。
🧩🧩公益项目 完全免费 来个真实评价就行
v1.0.8.1 [修复时间:2025-10-23]
## 1.0.8.1(2025-10-23)
+ 修复utssdk/app-ios/src/index.swift:44:39: error: cannot find type 'WifiFail' in scope
+ 等待官方半个月没人回复,只好自己解决官方苹果ios打包时报错的问题。 自己打包过了没问题才发出来,有问题及时说声我及时修改
需要增加新功能的也可以随时说声
方法一:插件市场直接导入使用
方法二:
(也可以直接把我的uts插件复制到uni.wifi插件里替换文件使用。)
(感谢官方DCloud移动团队开源,本人只修复问题,完全免费)
frequency: 2462表示 WiFi 信号的工作频率,单位是 MHz(兆赫兹)。这里的 2462MHz 属于 2.4GHz 频段(2.4GHz 频段的频率范围通常是 2400-2483.5MHz),
说明该 WiFi 使用的是 2.4GHz 频段传输数据。
SSID: "WiFi名称"即 Service Set Identifier(服务集标识符),也就是我们通常所说的 WiFi 名称。设备通过 SSID 来识别不同的无线网络,用户连接 WiFi 时看到的名称就是 SSID。
secure: false表示该 WiFi 是否启用了加密安全机制。false说明该 WiFi 未加密,无需密码即可连接;如果为true,则表示 WiFi 已加密(如 WPA2、WPA3 等),需要输入密码才能连接。
BSSID: "f2:5d:54:83:77:f3"即 Basic Service Set Identifier(基本服务集标识符),本质是 WiFi 路由器的物理 MAC 地址(硬件地址)。一个 SSID(WiFi 名称)可能对应多个 BSSID(例如同一名称的多个路由器或同一路由器的 2.4GHz/5GHz 频段),BSSID 用于唯一标识一个物理接入点。
{
"frequency": 2462, // 信号的工作频率
"SSID": "WiFi 名称", // WiFi 名称
"signalStrength": 35, // 表示 WiFi 信号强度 [数值越大 、信号强度越高] ↑
"secure": false, // 是否加密 true=需要密码 false=不需要密码即可连接
"BSSID": "f2:5d:54:83:77:f3" // WiFi 路由器的物理 MAC 地址
}
🧩🧩🧩1.使用方式
import {
initWifi,
getWifiList,
connectWifi,
getConnectedWifiInfo
} from "@/common/wifi/index.js";
/**
* 扫描wifi
*/
async scanWifi() {
console.log("这是 App(Android + iOS)");
uni.showLoading({
title:'加载中'
})
try {
await initWifi();
let list = await getWifiList();
// this.WiFiDataList = list;
console.log('原始wifi list数据=====start')
console.log(list)
// 使用示例
this.WiFiDataList = this.filterWifiList(list)
console.log('wifiList--------start')
console.log(this.WiFiDataList)
console.log('wifiList--------end')
uni.hideLoading()
} catch (e) {
console.log(e,'e=e')
uni.showToast({
title: "WiFi 扫描失败!",
icon: "none"
});
uni.hideLoading()
}
// try {
// // 需要事先申请定位权限(见下)
// const wifi = await getConnectedWifiInfo()
// if (wifi) {
// console.log('当前连接 WiFi:', wifi)
// this.myWifiFind = wifi
// // wifi.SSID, wifi.BSSID, wifi.frequency, wifi.signalStrength 等
// } else {
// uni.showToast({
// title: '未连接 WiFi',
// icon: 'none'
// })
// }
// } catch (e) {
// console.error(e)
// uni.showToast({
// title: '获取连接信息失败',
// icon: 'none'
// })
// }
},
/**
* 🧠 过滤逻辑:去除空SSID、重复SSID(保留信号最强)
* @param {Object} wifiList
*/
filterWifiList(list) {
if (!Array.isArray(list)) return []
const validList = list
.filter(i => i.BSSID && i.BSSID.trim() !== '' && i.SSID)
.map(ee=>{
if (ee.frequency > 3000) {
ee.SSID = ee.SSID + '_5G'
}
return ee
})
const map = new Map()
validList.forEach(item => {
const existing = map.get(item.BSSID)
if (!existing || item.signalStrength > existing.signalStrength) {
map.set(item.BSSID, item)
}
})
return Array.from(map.values()).sort((a, b) => b.signalStrength - a.signalStrength)
// if (!Array.isArray(wifiList)) return []
// // 1. 过滤空 SSID
// const validList = wifiList.filter(item => item.SSID && item.SSID.trim() !== '')
// // 2. 用 Map 去重(按 SSID 保留信号最强的)
// const map = new Map()
// validList.forEach(item => {
// const existing = map.get(item.SSID)
// if (!existing || item.signalStrength > existing.signalStrength) {
// map.set(item.SSID, item)
// }
// })
// // 3. 排序(信号强度由强到弱)
// const result = Array.from(map.values()).sort((a, b) => b.signalStrength - a.signalStrength)
// return result
},
🧩🧩🧩2.创建wifi.js
// @/common/wifi/index.js
// 初始化 WiFi 模块
export const initWifi = () => {
return new Promise((resolve, reject) => {
// #ifdef APP-PLUS
uni.startWifi({
success: res => {
console.log("WiFi 模块初始化成功", res);
resolve(res);
},
fail: err => {
console.error("WiFi 模块初始化失败", err);
reject(err);
}
});
// #endif
// #ifdef H5
console.log("这是 H5 浏览器环境");
resolve()
// #endif
});
};
// 获取 WiFi 列表
export const getWifiList = () => {
return new Promise((resolve, reject) => {
// #ifdef APP-PLUS
uni.getWifiList({
success: () => {
console.log("请求 WiFi 列表成功01");
uni.onGetWifiList(res => {
console.log("扫描到的 WiFi 列表02", res.wifiList);
resolve(res.wifiList || []);
});
},
fail: err => {
console.error("获取 WiFi 列表失败", err);
reject(err);
}
});
// #endif
// #ifdef H5
console.log("这是 H5 浏览器环境");
let wifiList = [
{
"frequency": 5785,
"SSID": "无线名称5G",
"signalStrength": -45,
"securityType": "WPA",
"secure": true,
"BSSID": "ff:b9:70:87:2c:c2"
},
{
"frequency": 2412,
"SSID": "无线名称",
"signalStrength": -64,
"securityType": "WPA",
"secure": true,
"BSSID": "f4:b2:5b:ee:2e:3c"
},
{
"frequency": 2437,
"SSID": "无线名称03",
"signalStrength": -85,
"securityType": "WPA",
"secure": true,
"BSSID": "f4:84:09:93:b1:74"
}
]
resolve(wifiList)
// #endif
});
};
// 连接指定 WiFi
export const connectWifi = ({
SSID,
BSSID,
password
}) => {
return new Promise((resolve, reject) => {
console.log({
SSID,
BSSID, // 安卓需要
password, // 如果 WiFi 有密码
})
uni.connectWifi({
SSID,
BSSID, // 安卓需要
password, // 如果 WiFi 有密码
success: res => {
console.log(`连接 WiFi 成功: ${SSID}`, res);
resolve(res);
},
fail: err => {
console.error(`连接 WiFi 失败: ${SSID}`, err);
reject(err);
}
});
});
};
// 获取当前连接 WiFi 信息
export function getConnectedWifiInfo() {
return new Promise((resolve, reject) => {
// 先确保 startWifi 已初始化(你已有 initWifi)
// #ifdef APP-PLUS
uni.startWifi({
success: () => {
uni.getConnectedWifi({
success(res) {
// res.wifi 是当前连接的 wifi info(不同平台字段略有差异)
resolve(res.wifi || null)
},
fail(err) {
console.error('getConnectedWifi fail:', err)
reject(err)
}
})
},
fail(err) {
console.error('startWifi fail:', err)
reject(err)
}
})
// #endif
// #ifdef H5
console.log("这是 H5 浏览器环境");
let wifiList = {
"frequency": 5785,
"SSID": "无线名称1",
"signalStrength": -45,
"securityType": "WPA",
"secure": true,
"BSSID": "ff:b9:70:87:2c:c2"
}
resolve(wifiList)
// #endif
})
}
=========================================
=========================================
以下为官方文档
使用说明
Wi-Fi功能模块
App-iOS平台注意事项
- iOS平台App获取Wi-Fi信息需要开启“Access WiFi information”能力
登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启“Access WiFi information”,保存后重新生成profile文件 - iOS13及以上系统,获取当前连接的Wi-Fi信息需要先获取系统定位权限,因此在iOS13及以上系统使用此接口时,会触发定位权限申请的弹窗
App-Android平台注意事项
- 如果是自定义基座,需要具备下面的权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
uni.startWifi(OBJECT)
初始化Wi-Fi模块。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#startwifi
uni.stopWifi(OBJECT)
关闭 Wi-Fi 模块。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#stopwifi
uni.getConnectedWifi(OBJECT)
获取已连接的 Wi-Fi 信息
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#getconnectedwifi
uni.getWifiList(OBJECT)
请求获取 Wi-Fi 列表。wifiList 数据会在 onGetWifiList 注册的回调中返回。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#getWifiList
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.onGetWifiList(CALLBACK)
监听获取到 Wi-Fi 列表数据事件。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#onGetWifiList
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.offGetWifiList(CALLBACK)
移除获取到 Wi-Fi 列表数据事件的监听函数。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#offGetWifiList
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.connectWifi(OBJECT)
连接 Wi-Fi。若已知 Wi-Fi 信息,可以直接利用该接口连接。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#connectWifi
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.onWifiConnected(CALLBACK)
监听连接上 Wi-Fi 的事件。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#onWifiConnected
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.offWifiConnected(CALLBACK)
移除连接上 Wi-Fi 的事件的监听函数。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#offWifiConnected
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.onWifiConnectedWithPartialInfo(CALLBACK)
监听连接上 Wi-Fi 的事件。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#onWifiConnectedWithPartialInfo
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |
uni.offWifiConnectedWithPartialInfo(CALLBACK)
移除连接上 Wi-Fi 的事件的监听函数。
使用文档:https://uniapp.dcloud.net.cn/api/system/wifi.html#offWifiConnectedWithPartialInfo
平台差异说明
| App-Android | App-iOS |
|---|---|
| √ | x |

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 4452
赞赏 9
下载 10632152
赞赏 1792
赞赏
京公网安备:11010802035340号