如何在没有 CaptiveNetwork 弃用框架的情况下在 Swift 2.0 中获取 ssid?

How to get ssid in Swift 2.0 without CaptiveNetwork deprecated framework?

在另一个问题 Get SSID in Swift 2 中找到的解决方案均无效,因为 CaptiveNetwork 框架在 Swift 2.0

中已弃用

在Swift1.2 a中使用这个函数:

    func getSSID() -> String {

    let interfaces = CNCopySupportedInterfaces()
    if interfaces == nil {
        return ""
    }

    //let interfacesArray = interfaces.takeRetainedValue() as! [String]
    let interfacesArray = Array(arrayLiteral: interfaces)
    if interfacesArray.count <= 0 {
        return ""
    }

    let interfaceName = String(interfacesArray[0])
    let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)
    if unsafeInterfaceData == nil {
        return ""
    }

    let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary!
    print(interfaceData["SSID"], terminator: "")
    return interfaceData["SSID"] as! String
}

但是下面的代码不再有效..

据我所知,CaptiveNetwork APIs 在 iOS 9 中已被弃用,但仍然可用——因此您仍然可以使用它们(后果自负,因为未来的更新可能会导致它们不再按预期工作)。如果它们在 Swift 中不可见,您可以通过 ObjC 桥接 header.

使它们可见

这不是我经常使用的领域,但看起来新的网络扩展 API 无论如何都打算取代 CaptiveNetwork。参见 Network Extension Framework Reference for docs and the WWDC15 session What's New in Network Extension and VPN