小程序获取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


目录
相关文章
|
2月前
|
Web App开发 开发框架 前端开发
移动端window.open跳转链接时,iOS没有反应的问题
【10月更文挑战第9天】在移动端使用 `window.open` 跳转链接时,iOS 可能无响应,原因是 iOS 的安全策略和弹出窗口阻止功能。解决方法包括:确保在用户交互后触发 `window.open`,将目标设置为 `_self`,使用锚点链接模拟跳转,或利用专门的移动端框架。需综合考虑这些方案以优化用户体验。
662 61
|
5月前
|
机器学习/深度学习 API iOS开发
探索iOS开发中的SwiftUI框架深入理解RESTful API设计原则与最佳实践
【7月更文挑战第30天】本文深入探讨了SwiftUI框架在iOS开发中的应用,分析了其对用户界面构建的简化方法及性能优化。通过比较传统UI构建方式与SwiftUI的差异,揭示了SwiftUI如何提高开发效率和用户体验。文章还讨论了SwiftUI在实际项目中的集成策略,并展望了其未来的发展方向。 【7月更文挑战第30天】在数字时代的浪潮中,RESTful API如同一座桥梁,连接着不同的软件系统。本文将探讨RESTful API的核心设计原则,揭示其背后的哲学思想,并通过实例分析展示如何将这些原则应用于实际开发中。我们将从资源定位、接口一致性到HTTP方法的恰当使用,逐一剖析,旨在为开发者提供
68 1
|
4月前
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
142 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]功能
|
4月前
|
JSON API 网络架构
SharePoint REST API 设置SummaryLength属性
【8月更文挑战第10天】在SharePoint中,可通过REST API设定`SummaryLength`属性来控制列表或库内项目摘要的显示长度。首先确定目标URL,接着构建POST请求并指定JSON格式的新摘要长度值,例如设置为100字符。利用Postman等工具发送请求,并确保提供认证信息。成功后,摘要长度将按设定更新,注意操作权限及对用户体验的影响。
|
3月前
|
图形学 iOS开发 Android开发
从Unity开发到移动平台制胜攻略:全面解析iOS与Android应用发布流程,助你轻松掌握跨平台发布技巧,打造爆款手游不是梦——性能优化、广告集成与内购设置全包含
【8月更文挑战第31天】本书详细介绍了如何在Unity中设置项目以适应移动设备,涵盖性能优化、集成广告及内购功能等关键步骤。通过具体示例和代码片段,指导读者完成iOS和Android应用的打包与发布,确保应用顺利上线并获得成功。无论是性能调整还是平台特定的操作,本书均提供了全面的解决方案。
157 0
|
4月前
|
API 网络架构 开发者
【Azure 环境】调用Azure RunCommand 的REST API 设置虚拟机的环境变量(SetEnvironmentVariable)
【Azure 环境】调用Azure RunCommand 的REST API 设置虚拟机的环境变量(SetEnvironmentVariable)
|
4月前
|
JSON Java API
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
【Azure API 管理】通过Java APIM SDK创建一个新的API,如何为Reqeust的Representation设置一个内容示例(Sample)?
|
4月前
|
存储 API 开发工具
【Azure API 管理】API Management如何有效且快速更新呢?如对APIs/Policy等设置内容
【Azure API 管理】API Management如何有效且快速更新呢?如对APIs/Policy等设置内容
|
4月前
|
API
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错
【Azure API 管理】Azure API Management在设置 Policy时,如何对URL进行解码呢? 使用 HttpUtility.UrlDecode 出错