前言
- 最近做了一個(gè)小程序連接WiFi的需求绩社,里面也遇到了一些坑。微信小程序提供了一組與WiFi相關(guān)的API赂苗,其中包括獲取已連接的WiFi信息愉耙,連接某個(gè)WiFi,以及監(jiān)聽(tīng)WiFi連接等功能拌滋。
使用wx.connectWifi連接WiFi
- 首先要調(diào)用
wx.startWiFi
啟動(dòng)WiFi模塊朴沿,對(duì)應(yīng)的由stopWifi
關(guān)閉WiFi模塊。后續(xù)的操作都要放在startWiFi的success回調(diào)函數(shù)里執(zhí)行败砂,然后這里就可以直接調(diào)用wx.connectWifi
來(lái)連接某個(gè)WiFi赌渣,只需要傳入SSID(WiFi名稱)和密碼就可以了。
- 然而這個(gè)api有些問(wèn)題昌犹,在IOS環(huán)境下坚芜,即使傳入錯(cuò)誤的wifi和密碼,connectWifi還是會(huì)執(zhí)行success回調(diào)斜姥。解決方法就是在connectWifi的回調(diào)里再判斷下是否是IOS環(huán)境鸿竖,是的話再去調(diào)用
getConnectedWifi
判斷當(dāng)前是否連接的是之前傳入的WiFi,來(lái)判斷連接是否成功铸敏。
- 下面是具體示例代碼:
let SSID = 'wifiName'
let password = '12345'
wx.startWifi({
success() {
wx.connectWifi({
SSID,
password,
success() {
if (isIOS) { // 是否是IOS可通過(guò)提前調(diào)用getSystemInfo知道
wx.onWifiConnected(result=> {
if (result.wifi.SSID === SSID) {
// 連接成功
} else {
// 連接失敗
}
})
} else {
// 連接成功
}
}缚忧,
fail(e) {
// 連接失敗
}
})
}
})
- 以上就是解決這個(gè)IOS下面問(wèn)題的方法,之前也考慮過(guò)通過(guò)
onWifiConnected
方法杈笔,但那樣只能監(jiān)聽(tīng)到連接成功闪水,連接失敗的話無(wú)法知道。
- 然后還有就是關(guān)于判斷手機(jī)是否打開(kāi)了WiFi功能蒙具,可以通過(guò)調(diào)用
getSystemInfo
返回的wifiEnabled
屬性得知球榆,需要2.6.0版本以上峰弹。然后調(diào)用connectWifi
時(shí)fail的回調(diào),錯(cuò)誤碼為12005時(shí)表示手機(jī)未開(kāi)啟WiFi功能芜果,但這個(gè)也是部分安卓機(jī)才支持鞠呈。