微信小程序 在已知 WIFI 名和密码情况下,实现一键连接。
在实现这个功能时可能遇到一些问题
-
IOS 及 安卓连接情况不一致
-
机型版本情况不同问题
-
手机联网情况
1、已连接 目标WIFI
2、已连接 WIFI 不属于目标 WIFI
3、使用数据网络 或 手机热点
IOS
startWifi、onWifiConnected、connectWifi、getConnectedWifi、stopWifi,根据情况需要用到这些方法
startWifi 用于初始化 Wi-Fi 模块,只有初始化wifi模块之后才可以进行其他操作
stopWifi 关闭 WIFI 模块,建议执行完 WIFI 模块之后将其关闭释放资源
connectWifi 根据传递参数连接 WIFI
getConnectedWifi 获取当前 WIFI 信息
stopWifi 释放 WIFI 模块
wx.showModal({
title: '提示',
content: '请连接 WIFI',
success: r => {
if(r.confirm) { // 确认去自动连接 WIFI
wx.startWifi({
success: sRes => {
/* ios 有时监听不到连接情况
wx.onWifiConnected(oRes => {
wx.showModal({
title: '监听提示',
content: JSON.stringify(oRes)
})
})
*/
wx.showLoading({
title: '连接中...',
mask: true
})
wx.connectWifi({
SSID: 'TP-LINK',
password: '********',
success: cRes => {
wx.hideLoading()
wx.getConnectedWifi({
success: e => { // 当手机有了 WIFI 情况
if(e.wifi.SSID == 'TP-LINK') { // 当前连接的 WIFI 是目标 WIFI
wx.showModal({
title: '提示',
content: '连接成功',
showCancel: false
})
}else { // 当前连接的 WIFI 是其它 WIFI
wx.showModal({
title: '提示',
content: '连接失败,请手动连接 WIFI ,WIFI 名称:TP-LINK,密码:********',
showCancel: false
})
}
}, fail: err => { // 获取不到 WIFI 信息, 判断为连接失败
wx.showModal({
title: '提示',
content: '连接失败,请手动连接 WIFI ,WIFI 名称:TP-LINK,密码:********',
showCancel: false
})
}, complete: () => {
wx.stopWifi() // 释放 WIFI 模块
}
})
}
})
}
})
}else if(r.cancel) { // 取消连接 WIFI
console.log('取消')
}
}
})
目前只试了 IOS 情况下简单实现一键连接,感觉还有很多坑,特此记录一下...