物联网设备的客户端应用有个配网的需求,然后需要通过客户端将设备的 WIFI SSID 发送给设备,让设备和客户端处于一个内网环境。

之前其实就有 IOS 应用需要获取 wifi 列表的需求,我调研了以后发现需要向苹果申请 wifi 信息权限,于是我本能反应觉得获取当前设备连接的 wifi ssid 应该也属于这块,但是经过 google 之后发现这玩意居然可以通过 CNCopySupportedInterfaces 获取而且不需要权限直接获取到。

直接加到之前写的网络工具类里,完美。

import SystemConfiguration.CaptiveNetwork

class NetworkTool {

    func getWIFISSID() -> String {
        var wifiName = ""
        let wifiInterfaces = CNCopySupportedInterfaces()
        guard wifiInterfaces != nil else {
            return wifiName
        }

        let interfaceArr = CFBridgingRetain(wifiInterfaces) as! [String]
        if interfaceArr.count > 0 {
            let interfaceName = interfaceArr[0] as CFString
            let ussafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)

            if ussafeInterfaceData != nil {
                let interfaceData = ussafeInterfaceData as! [String: Any]
                wifiName = interfaceData["SSID"]! as! String
            }
        }
        return wifiName
    }

}