uni-app怎么获取WiFi列表 uni-app手机连接WiFi信息查询【教程】
getWifiList返回空因未走完完整流程:需先startWifi初始化,再注册onGetWifiList监听回调,且真机必须开启定位权限并配置requiredPrivateInfos白名单。uni-app里getWifiList为什么总返回空?因为没走完完整流程:微信小程序的WiFi API是事件驱动的,getWifiList本身不返回数据,只触发系统扫描;真实列表必须靠onGetWifiList监听回调才能拿到。很多人写了getWifiList就以为完事了,结果console.log出来是undefined或空数组。必须先调用startWifi初始化模块,否则后续全部失败 getWifiList成功后,要提前注册onGetWifiList,否则回调收不到 真机调试时,若未开启定位服务或拒绝scope.userLocation授权,列表一定为空(Android/iOS均如此) 微信开发者工具模拟器不支持WiFi扫描,必须真机测试 示例片段(不可省略任一环节):uni.startWifi({ success: () => { uni.onGetWifiList(res => { console.log('扫到这些WiFi:', res.wifiList) }) uni.getWifiList({ fail: err => console.error('扫描触发失败', err) }) }, fail: err => console.error('WiFi模块启动失败', err) })Android真机上getWifiList返回空,但权限都配了?大概率是缺了运行时定位权限。从Android 6.0起,ACCESS_FINE_LOCATION属于危险权限,光在manifest.json里声明不够,还必须在代码里动态申请。manifest.json中app-plus → distribute → android → permissions需包含:android.permission.ACCESS_FINE_LOCATION、android.permission.ACCESS_WIFI_STATE 必须在调用startWifi前,执行uni.authorize({ scope: 'scope.userLocation' }) 若用户之前点过“拒绝”,authorize会直接失败,得引导跳转系统设置页:uni.openSystemSetting() Android 10+强制要求定位权限,哪怕你只扫列表、不连接,也绕不开 微信小程序配置requiredPrivateInfos报错或不生效?这是微信平台的硬性白名单机制,不是可选项。如果你没在mp-weixin节点下显式声明,API调用会被静默拦截,控制台可能连错误都不抛。必须在manifest.json的mp-weixin对象里加:"requiredPrivateInfos": ["getWifiList", "startWifi"] 同时补全permission字段:"scope.userLocation": { "desc": "用于获取附近WiFi列表" } 注意:这个desc文案会在首次授权弹窗中显示,不能为空或纯空格,否则审核可能被拒 修改后必须重新上传小程序代码,本地调试不会校验该字段 App端(iOS/Android)能用uni.getWifiList吗?不能。UniApp的getWifiList等API仅在微信/支付宝等小程序平台可用,App端(app-plus)完全不支持——官方文档明确标注为“小程序专属”。想在App里实现,唯一可行路径是写原生插件:Android用WifiManager,iOS用CNCopyCurrentNetworkInfo(iOS 12+)或NEHotspotNetwork(iOS 14+) 插件需处理权限桥接、异步回调封装、密码加密传输等细节,开发成本远高于小程序 第三方插件如Fvv-UniWifiHelper可降低门槛,但仍需手动配置权限和链接原生模块 最常被忽略的一点:WiFi扫描不是纯前端能力,它卡在系统层、权限层、平台策略层三层交界处。写对三行API只是开始,真正耗时的是把每层的“必须动作”都补全——尤其是Android的动态定位授权和微信的requiredPrivateInfos白名单。 There’s An AI For That 全球领先的 AI 聚合器,收集10,225个AI工具,可用于超过2,548个任务。
更多推荐
所有评论(0)