在 Swift 3 中检索 WiFi 网络

Retrieving WiFi network in Swift 3

我正在尝试找出机器连接的 SSID。我发现的所有内容都是针对 iOS 的,没有用。使用下面的代码,我收到一条错误消息:“'CNCopyCurrentNetworkInfo' 不可用”,因为它是 iOS 特定的。什么是 macOS 等效项?

Swift 3:

    import SystemConfiguration.CaptiveNetwork

    var wifiNetwork = "Unknown"
    if let interfaces = CNCopySupportedInterfaces() {
        for i in 0..<CFArrayGetCount(interfaces){
            let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interfaces, i)
            let rec = unsafeBitCast(interfaceName, to: AnyObject.self)
            let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString)

            if let unsafeInterfaceData = unsafeInterfaceData as? Dictionary<AnyHashable, Any> {
                wifiNetwork = (unsafeInterfaceData["SSID"] as? String)!
            }
        }
     }

使用 Apple 网络之神 Quinn 的回答:

https://forums.developer.apple.com/thread/50302

复制到这里:

func currentSSIDs() -> [String] {  
    guard let interfaceNames = CNCopySupportedInterfaces() as? [String] else {  
        return []  
    }  
    return interfaceNames.flatMap { name in  
        guard let info = CNCopyCurrentNetworkInfo(name as CFString) as? [String:AnyObject] else {  
            return nil  
        }  
        guard let ssid = info[kCNNetworkInfoKeySSID as String] as? String else {  
            return nil  
        }  
        return ssid  
    }  
}  

在检查互联网连接后,我使用下面的代码获取了当前的 SSID。

import CoreWLAN

let wifiNetwork = CWWiFiClient.shared().interface()!.ssid()!