You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用network_info_plus获取SSID遇异常:Android/iOS均存问题求方案

解决思路
  • 版本一致性处理:
    先统一依赖版本,优先使用pub.dev上的稳定版network_info_plus: ^4.1.0,避免使用文档未同步的5.0.0版本。如果想尝试最新代码,可以直接依赖仓库源码:

    network_info_plus:
      git:
        url: https://github.com/fluttercommunity/plus_plugins.git
        path: packages/network_info_plus
    

    依赖后执行flutter pub get,清理项目缓存(flutter clean)再重新编译。

  • Android端SSID缺失修复:
    Android 14获取WiFi SSID需要满足两个核心条件:

    1. 权限配置:在AndroidManifest.xml中添加必要权限:
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
      <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" />
      
    2. 位置服务开启:Android 10+要求必须开启系统位置服务,即使权限已授予,关闭位置服务仍会返回空SSID。可以在代码中判断位置服务状态,引导用户开启。
    3. 动态权限申请:使用permission_handler包主动请求Permission.locationWhenInUse权限,确保用户已授权。
  • iOS端无返回值修复:
    iOS 17.2.1下获取WiFi信息需注意:

    1. 权限配置:在Info.plist中添加位置权限描述:
      <key>NSLocationWhenInUseUsageDescription</key>
      <string>需要获取位置权限以获取WiFi信息</string>
      <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
      <string>需要获取位置权限以获取WiFi信息</string>
      
    2. 真实设备测试:iOS模拟器无法获取真实WiFi数据,必须使用物理设备测试。
    3. 精确位置权限:iOS 14+需确保用户授予了精确位置权限,模糊位置权限无法获取WiFi SSID。
  • 替代方案:
    如果上述方法仍无效,可以通过Platform Channel实现原生逻辑:

    • Android端:使用ConnectivityManager.getActiveNetworkInfo()结合WifiManager.getConnectionInfo()获取SSID。
    • iOS端:调用CNCopyCurrentNetworkInfo(nil)获取当前WiFi信息(需导入SystemConfiguration/CaptiveNetwork.h)。

内容的提问来源于stack exchange,提问作者Mauro Miotello

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:35:19