物联网设备的客户端应用有个配网的需求,然后需要通过客户端将设备的 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
}
}