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

如何获取当前连接网络的SSID?Swift代码返回nil求助

解决Swift获取WiFi SSID返回nil的问题

核心问题排查与修复步骤

1. 补全必要权限配置

iOS 13及以上版本,获取WiFi SSID必须同时满足两个权限要求:

  • 在Info.plist中添加NSWiFiUsageDescription,填写权限说明(例如:"需要获取WiFi名称以提供专属服务")
  • 在Info.plist中添加定位权限描述,可选Privacy - Location When In Use Usage Description或Privacy - Location Always and When In Use Usage Description,并填写对应文案
  • 代码中需主动请求定位权限,因为WiFi信息获取依赖定位服务(无需获取具体位置,仅需开启定位权限)

2. 修复代码逻辑漏洞

你的原代码在第一个接口获取不到信息时直接返回false,会跳过后续可能有效的网络接口。调整循环逻辑,继续遍历所有接口直到找到有效信息:

import SystemConfiguration.CaptiveNetwork
import CoreLocation

func getCurrentSSID() -> String? {
    // 请求定位权限(需先在Info.plist配置权限描述)
    let locationManager = CLLocationManager()
    if CLLocationManager.authorizationStatus() == .notDetermined {
        locationManager.requestWhenInUseAuthorization()
    }
    
    guard let interfaces = CNCopySupportedInterfaces() as? [String] else {
        print("未检测到可用网络接口")
        return nil
    }
    
    for interface in interfaces {
        guard let networkInfo = CNCopyCurrentNetworkInfo(interface as CFString) as? [String: AnyObject] else {
            continue // 跳过无信息的接口,继续检查下一个
        }
        
        if let ssid = networkInfo[kCNNetworkInfoKeySSID as String] as? String {
            return ssid
        }
    }
    
    print("无法获取当前WiFi网络信息")
    return nil
}

3. 其他关键注意事项

  • 必须使用真机测试,模拟器无法获取真实WiFi信息
  • 确保设备已连接WiFi网络(蜂窝网络环境下无法获取SSID)
  • iOS 14+需确认App未被系统限制网络权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:30:21