小程序获取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月前
|
小程序
微信小程序如何实现进入小程序自动连WiFi功能
微信小程序如何实现进入小程序自动连WiFi功能
|
2月前
|
前端开发 小程序 API
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
|
2月前
|
SQL API 数据库
为API设置默认排序规则结果数据的正确性
Dataphin数据服务支持API调用时通过OrderByList自定义排序,确保数据返回符合业务需求。默认排序在API设计时至关重要,因为它影响用户体验、数据一致性及查询正确性。新版本 Dataphin 提供了排序优先级设置,允许在SQL脚本或OrderByList中指定排序,以适应不同场景。
|
5天前
|
小程序
【微信小程序】英文字母不换行问题 flex布局字符超出宽度折行问题:设置了word-break: break-all;和flex: 1;冲突flex不生效问题
【微信小程序】英文字母不换行问题 flex布局字符超出宽度折行问题:设置了word-break: break-all;和flex: 1;冲突flex不生效问题
9 1
|
12天前
|
前端开发 iOS开发
input框设置placeholder属性在iOS中显示不完整
input框设置placeholder属性在iOS中显示不完整
10 1
|
19天前
|
小程序
【干货】微信小程序如何设置背景图片
【干货】微信小程序如何设置背景图片
16 2
|
3天前
|
小程序 JavaScript 前端开发
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)
6 0
|
5天前
|
小程序
【亲测有效】3步实现 微信小程序内接入小程序客服,网页端客服工具与移动端小程序客服工具使用方法,使用入口,并设置当前客服状态
【亲测有效】3步实现 微信小程序内接入小程序客服,网页端客服工具与移动端小程序客服工具使用方法,使用入口,并设置当前客服状态
22 0
|
9天前
|
前端开发 Java 数据库连接
项目API借口的根路径怎样设置
项目API借口的根路径怎样设置
|
10天前
|
文字识别 小程序 算法
视觉智能开放平台产品使用合集之通过小程序接入视觉智能开放平台API能力,不是上海地域的OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。