美文网首页Incentive Mesh Network开发者社区
微信小程序连接WiFi(以及connectWifi在IOS的坑)

微信小程序连接WiFi(以及connectWifi在IOS的坑)

作者: ITgecko | 来源:发表于2019-03-28 23:29 被阅读208次
    前言
    • 最近做了一个小程序连接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功能,但这个也是部分安卓机才支持。

    相关文章

      网友评论

        本文标题:微信小程序连接WiFi(以及connectWifi在IOS的坑)

        本文链接:https://www.haomeiwen.com/subject/lrihbqtx.html