前言
- 最近做了一个小程序连接WiFi的需求,里面也遇到了一些坑。微信小程序提供了一组与WiFi相关的API,其中包括获取已连接的WiFi信息,连接某个WiFi,以及监听WiFi连接等功能。
使用wx.connectWifi连接WiFi
- 首先要调用
wx.startWiFi
启动WiFi模块,对应的由stopWifi
关闭WiFi模块。后续的操作都要放在startWiFi的success回调函数里执行,然后这里就可以直接调用wx.connectWifi
来连接某个WiFi,只需要传入SSID(WiFi名称)和密码就可以了。
- 然而这个api有些问题,在IOS环境下,即使传入错误的wifi和密码,connectWifi还是会执行success回调。解决方法就是在connectWifi的回调里再判断下是否是IOS环境,是的话再去调用
getConnectedWifi
判断当前是否连接的是之前传入的WiFi,来判断连接是否成功。
- 下面是具体示例代码:
let SSID = 'wifiName'
let password = '12345'
wx.startWifi({
success() {
wx.connectWifi({
SSID,
password,
success() {
if (isIOS) { // 是否是IOS可通过提前调用getSystemInfo知道
wx.onWifiConnected(result=> {
if (result.wifi.SSID === SSID) {
// 连接成功
} else {
// 连接失败
}
})
} else {
// 连接成功
}
},
fail(e) {
// 连接失败
}
})
}
})
- 以上就是解决这个IOS下面问题的方法,之前也考虑过通过
onWifiConnected
方法,但那样只能监听到连接成功,连接失败的话无法知道。
- 然后还有就是关于判断手机是否打开了WiFi功能,可以通过调用
getSystemInfo
返回的wifiEnabled
属性得知,需要2.6.0版本以上。然后调用connectWifi
时fail的回调,错误码为12005时表示手机未开启WiFi功能,但这个也是部分安卓机才支持。
网友评论