小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)

简介: 小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)

小程序获取WIFI的API(IOS conncetWifi()自动跳转设置页)

1. 官方说明

小程序对于wifi的常用接口有

startWifi: 初始化 Wi-Fi 模块

connectWifi: 连接 Wi-Fi(iOS 需 11 及以上版本支持

onGetWifiList: 获取到 Wi-Fi 列表数据事件

但是有这两点注意事项


Android 系统 6.0 以上版本,在没有打开定位开关的时候会导致设备不能正常获取周边的 Wi-Fi 信息。

Wi-Fi 相关接口暂不可用 wx.canIUse 接口判断。


2. IOS conncetWifi()自动跳转设置页解决思路


小程序IOS获取WIFI列表有个缺陷就是会自动跳转到手机设置页面,需要点击无线局域网,等到WIFI列表加载出来之后小程序的onGetWifiList()接口才能返回wifi列表。对于这种情况有两种方式。


方法一、IOS只调用startWifi()方法,不去调用onGetWifiList方法。让用户手动输入wifi名称。再去连接wifi。这样需要用户手动输入,但是不用跳转到设置页面。不需要切换回小程序。


方法二、把 onGetWifiList()方法写在onShow()里,就可以获取到wifi列表了。


3. wifi的API

通过判断是安卓还是IOS,安卓需要判断是否有位置信息。IOS的话,就不去获取wifi列表了,如果需要的话,放在页面的onShow()里。initWIFI()方法会返回wifi列表。

async function initWIFI() {
    let sysInfo = wx.getSystemInfoSync()
    let platform = sysInfo.platform
    // 只有ios 11以上,及andoird 6以上,才有这样的wifi连接功能
    if (platform == "android") {
        let sysVersion = parseInt(sysInfo.system.substr(8))
        if (sysVersion < 6) {
            return {ok:false,msg:"android版本低"}
        }
        let res0 = await wx.getSetting({
            withSubscriptions: false,
        }).catch(err => {
            console.log("err", err);
            return {ok:false,msg:`运行错误:${err}`}
        })
        if (res0 && !res0.authSetting["scope.userLocation"]) {
            // 如果没有这个权限,先授权
            let authRes = await wx.authorize({
                scope: 'scope.userLocation'
            }).catch(err => {
                console.log("err", err);
                return {ok:false,msg:`运行错误:${err}`}
            })
            if (authRes && authRes.errMsg != "authorize:ok") {
                console.log('地理授权失败', authRes.errMsg);
                return {ok:false,msg:'android地理授权失败'}
            }
        }
        await wx.startWifi().catch(err => {
            console.log("err", err);
            return {ok:false,msg:`运行错误:${err}`}
        })
        await wx.getWifiList().catch(err => {
            console.log("err", err);
            return {ok:false,msg:`运行错误:${err}`}
        })
        let res = await new Promise((resolve, reject) => {
            wx.onGetWifiList(res => {
                resolve(res)
            })
        })
        if (!res.wifiList.length) return {ok:false,msg:"wifi列表为空"}
        console.log("res.wifiList", res.wifiList);
        return {ok:true,msg:'WIFI列表获取成功',data:res.wifiList}
    } else if (platform == "ios") {
        let sysVersion = parseInt(sysInfo.system.substr(4))
        if (sysVersion < 11) {
            return {ok:false,msg:"ios版本低"}
        }
        await wx.startWifi().catch(err => {
            console.log("err", err);
            return {ok:false,msg:`运行错误:${err}`}
        })
        return {ok:true,msg:'WIFI列表获取成功',data:[]}
    } else {
        return {ok:false,msg:"平台不支持"}
    }
}
export default initWIFI


目录
相关文章
|
1月前
|
监控 小程序 安全
小程序的 API 做了什么处理,能够做到全局变量的隐藏
【10月更文挑战第23天】小程序的 API 通过运行环境隔离、作用域限制、数据绑定机制、事件机制、状态管理、代码封装和模块化、安全策略和权限控制以及运行时监控和检测等多种手段来实现全局变量的隐藏。这些措施共同作用,确保了小程序的安全、稳定和可靠运行,同时也提高了开发效率和代码质量。
|
4月前
|
小程序
微信小程序多种跳转页面方式
微信小程序多种跳转页面方式
|
3月前
|
小程序 开发工具
app跳转微信小程序,使用明文scheme拉起
app跳转微信小程序,使用明文scheme拉起
745 4
|
3月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
4月前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
152 0
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
4月前
|
Web App开发 缓存 小程序
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
|
3月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
160 0
|
4月前
|
移动开发 开发框架 小程序
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
|
5月前
|
文字识别 小程序 安全
印刷文字识别操作报错合集之微信小程序调用API时路径总是返回不对,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
4月前
|
小程序
uni-app——微信小程序设置全局分享
uni-app——微信小程序设置全局分享
206 0