uniapp app 如何获取当前wifi信息

在uniapp开发的app中,如何获取当前连接的wifi名称、信号强度等详细信息?尝试过plus.networkinfo.getCurrentType()但只能返回网络类型。需要兼容Android和iOS平台,是否有现成的API或插件可以实现?求具体代码示例或解决方案。

2 回复

在uni-app中,可通过uni.getNetworkType获取网络类型,但无法直接获取WiFi信息。如需获取WiFi名称等详细信息,需使用原生插件,如uni-ext-api或自行开发原生模块。


在 UniApp 中,获取当前 WiFi 信息(如 SSID、BSSID 等)需要使用原生插件,因为 UniApp 本身不提供直接获取 WiFi 信息的 API。以下是详细步骤和示例代码:

方法:使用原生插件(如 cordova-plugin-wifi)

  1. 安装插件
    如果使用 HBuilderX,可通过「原生插件」市场搜索并添加 WiFi 插件(如 cordova-plugin-wifi)。
    若使用 CLI,运行:

    npm install cordova-plugin-wifi
    
  2. 代码示例(在 UniApp 页面中):

    // 仅支持 App 端
    export default {
      methods: {
        getWifiInfo() {
          // 检查是否支持 Cordova 环境
          if (window.cordova && window.cordova.plugins.WifiManager) {
            cordova.plugins.WifiManager.getCurrentSSID(
              (ssid) => {
                console.log("当前 WiFi SSID:", ssid);
                uni.showToast({ title: `SSID: ${ssid}`, icon: 'none' });
              },
              (error) => {
                console.error("获取失败:", error);
                uni.showToast({ title: '获取 WiFi 信息失败', icon: 'none' });
              }
            );
          } else {
            uni.showToast({ title: '环境不支持或插件未加载', icon: 'none' });
          }
        }
      },
      onLoad() {
        this.getWifiInfo();
      }
    }
    

注意事项:

  • 平台限制:仅支持 App 端(Android/iOS),H5 和小程序无法直接获取 WiFi 信息。
  • 权限配置
    • Android:需在 manifest.json 中配置网络权限:
      {
        "permissions": ["android.permission.ACCESS_WIFI_STATE"]
      }
      
    • iOS:需在 manifest.jsonios 节点下添加隐私描述:
      "privacyDescription": {
        "NSLocationWhenInUseUsageDescription": "用于获取当前 WiFi 信息"
      }
      
  • 插件兼容性:不同插件 API 可能略有差异,请参考具体插件文档。

替代方案:

如果无需实时信息,可通过网络请求间接获取 IP 和网络类型,但无法获取 SSID/BSSID。

建议测试前确认插件兼容性,并在真机调试。

回到顶部