在 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()!
我正在尝试找出机器连接的 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()!