uniapp 如何获取当前wifi信息

在uniapp开发中,如何获取当前设备连接的wifi名称和信号强度等信息?官方文档似乎没有明确的API说明,尝试过plus.networkinfo但获取不到具体wifi数据。请问有实际可行的解决方案吗?需要兼容Android和iOS平台。

2 回复

在uniapp中,可以使用uni.getNetworkType获取网络类型,但无法直接获取WiFi信息。如需获取WiFi名称等详细信息,需使用原生插件或调用原生API实现。


在 UniApp 中,获取当前 Wi-Fi 信息需要使用 uni.getConnectedWifi() 方法。这个方法依赖于微信小程序的部分 API 支持,因此主要适用于微信小程序平台,其他平台(如 H5、App)可能不支持或需要额外配置。

实现步骤:

  1. 检查平台兼容性:确保在微信小程序环境中运行。
  2. 调用 API:使用 uni.getConnectedWifi() 获取已连接的 Wi-Fi 信息。
  3. 处理返回数据:成功时获取 SSID、BSSID 等详细信息;失败时处理错误。

示例代码:

// 在页面方法或事件中调用
getWifiInfo() {
  // 检查是否在微信小程序环境
  if (uni.getSystemInfoSync().platform === 'devtools' || uni.getSystemInfoSync().platform === 'ios' || uni.getSystemInfoSync().platform === 'android') {
    uni.showToast({
      title: '此功能仅支持微信小程序',
      icon: 'none'
    });
    return;
  }

  // 调用获取 Wi-Fi 信息的方法
  uni.getConnectedWifi({
    success: (res) => {
      console.log('Wi-Fi 信息:', res.wifi);
      // 返回的 res.wifi 包含以下字段:
      // - SSID: Wi-Fi 名称
      // - BSSID: 路由器 MAC 地址
      // - secure: 是否安全
      // - signalStrength: 信号强度
      uni.showModal({
        title: '当前 Wi-Fi',
        content: `名称: ${res.wifi.SSID}\nMAC: ${res.wifi.BSSID}`,
        showCancel: false
      });
    },
    fail: (err) => {
      console.error('获取失败:', err);
      uni.showToast({
        title: '获取 Wi-Fi 信息失败',
        icon: 'none'
      });
    }
  });
}

注意事项:

  • 平台限制:此 API 目前主要支持微信小程序,在 H5 或 App 中可能无法使用或返回空数据。
  • 用户权限:在微信小程序中,首次调用时会请求用户授权,如果用户拒绝,需引导用户手动开启权限。
  • 安全限制:部分 Wi-Fi 信息(如 BSSID)可能受隐私政策限制,需合理使用。

扩展建议:

  • 如果需要更广泛的平台支持(如 App),可考虑使用原生插件或条件编译针对不同平台处理。
  • 始终在 fail 回调中处理错误,以提升用户体验。

通过以上方法,你可以在 UniApp 中获取当前连接的 Wi-Fi 基本信息。如有问题,请参考 UniApp 官方文档 获取更新信息。

回到顶部