iOS 获取wifi列表,onGetWifiList无法触发

Daotin 于 2023-11-07 发布 编辑

参考:

补充:1 月 3 日

并不是不触发,而是 ios wifi 列表的转圈结束后,并不是获取 wifi 成功,还要等一会才获取列表成功。(可以看到转圈结束后,等一会,还会增加几个 Wi-Fi)

使用方式:

1、获取授权

getWifiAuth() {
  const that = this;
  uni.getSetting({
    success: (res) => {
      console.log(res);
      // 查看是否有定位权限
      if (!res.authSetting["scope.userLocation"]) {
        uni.authorize({
          scope: "scope.userLocation",
          success() {
            that.getWifiList();
          },
          // 拒绝授权
          fail: () => {
            that.showModal = true;
          },
        });
      } else {
        that.getWifiList();
      }
    },
  });
},

2、申请获取 Wi-Fi 列表

getWifiList() {
  const that = this;
  this.showLoading();
  uni.startWifi({
    success: function () {
      // 获取当前连接的Wi-Fi
      uni.getConnectedWifi({
        success: function (res) {
          console.log("已连接Wi-Fi:", res.wifi);
          that.connectedWifi = res.wifi;
        },
      });

      // 请求获取Wi-Fi列表
      uni.getWifiList({
        success: function (res) {
          console.log("Wi-Fi列表获取请求已发送");
          that.onGetWifiList();
        },
      });
    },
    fail: function (err) {
      console.error("获取Wi-Fi列表失败:", err);
    },
  });
},

// 在onShow里面也监听Wi-Fi列表的回调(有时候会在onShow里面触发)
onShow() {
  this.onGetWifiList();
}

3、获取到 Wi-Fi 列表的回调

onGetWifiList() {
  const that = this;
  console.log('执行onGetWifiList');
  uni.onGetWifiList(function (res) {
    console.log('onGetWifiList+++');
    if (res.wifiList.length) {
      console.log("已获取到Wi-Fi列表", res.wifiList);
      that.wifiList = res.wifiList;
    } else {
      console.log("当前环境没有Wi-Fi");
    }
  });
},