【愚公系列】2022年09月 微信小程序-获取WIFI信息

举报
愚公搬代码 发表于 2022/09/30 22:44:55 2022/09/30
1.7k+ 0 0
【摘要】 前言微信小程序货期WIFI信息主要分为以下几个步骤getSystemlnfo:查看平台环境startWifi:启动WiFi模块getWifiList:尝试拉取WiFi列表onGetWifiList:监听WiFi列表到达connectWifi:连接WiFi 一、获取WIFI信息 1.全局配置app.js配置"permission": { "scope.userLocation": { ...

前言

微信小程序货期WIFI信息主要分为以下几个步骤

  • getSystemlnfo:查看平台环境
  • startWifi:启动WiFi模块
  • getWifiList:尝试拉取WiFi列表
  • onGetWifiList:监听WiFi列表到达
  • connectWifi:连接WiFi

一、获取WIFI信息

1.全局配置

app.js配置

"permission": {
  "scope.userLocation": {
    "desc": "位置信息用途说明"
  }
}

2.页面

2.1 wxml

<view class="page-section">
	<view class="btn-area">
		<button bindtap="startToConnect" type="primary">WIFI连接</button>
	</view>
</view>

2.2 js

import connectWifi from '../../lib/connect-wifi'
Page({
  async startToConnect() {
    let res = await connectWifi()
    console.log("startToConnect result",res)
  },
})

3.组件

async function connectWifi() {
  let ssid = '201',
    pass = '123456789'
  let sysInfo = wx.getSystemInfoSync()
  let platform = sysInfo.platform
  // devtools/android/ios 
  // ios:iOS 10.0.1
  console.log("platform", platform, sysInfo.system);

  // 只有ios 11以上,及andoird 6以上,才有这样的wifi连接功能
  if (platform == "android") {
    let sysVersion = parseInt(sysInfo.system.substr(8))
    if (sysVersion < 6) {
      return "android版本低"
    }
    let res0 = await wx.wxp.getSetting({
      withSubscriptions: false,
    }).catch(err => {
      console.log("err", err);
      return `运行错误:${err}`
    })

    if (res0 && !res0.authSetting["scope.userLocation"]) {
      // 如果没有这个权限,先授权
      let authRes = await wx.wxp.authorize({
        scope: 'scope.userLocation'
      }).catch(err => {
        console.log("err", err);
        return `运行错误:${err}`
      })

      if (authRes && authRes.errMsg != "authorize:ok") {
        console.log('地理授权失败', authRes.errMsg);
        return 'android地理授权失败'
      }
    }
  } else if (platform == "ios") {
    let sysVersion = parseInt(sysInfo.system.substr(4))
    if (sysVersion < 11) {
      return "ios版本低"
    }
    await wx.wxp.showModal({
      title: '请切到系统设置->wifi列表,等待wifi连接成功',
      showCancel: false
    }).catch(err => {
      console.log("err", err);
      return `运行错误:${err}`
    })
  } else {
    return "平台不支持"
  }

  await wx.wxp.startWifi().catch(err => {
    console.log("err", err);
    return `运行错误:${err}`
  })
  await wx.wxp.getWifiList().catch(err => {
    console.log("err", err);
    return `运行错误:${err}`
  })
  let res = await new Promise((resolve, reject) => {
    wx.onGetWifiList(res => {
      resolve(res)
    })
  })
  if (!res.wifiList.length) return "wifi列表为空"
  console.log("res.wifiList", res.wifiList);

  // var signalStrength = 0;
  var bssid = '';

  for (var i = 0; i < res.wifiList.length; i++) {
    let wifi = res.wifiList[i]
    if (wifi.SSID == ssid) {
      bssid = wifi.BSSID
      break
    }
  }
  if (!bssid) return '未查询到目标wifi'
  let res1 = await wx.wxp.connectWifi({
    SSID: ssid,
    BSSID: bssid,
    password: pass
  }).catch(err => {
    console.log("err", err);
    return `运行错误:${err}`
  })
  if (res1) {
    console.log("wifi连接成功");
    return "connectWifi:ok"
  }
  return "未知错误"
}

export default connectWifi
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。