2017-07-18 2 views
0

Ich versuche herauszufinden, mit welcher SSID das Gerät verbunden ist. Alles, was ich gefunden habe, ist für iOS und ist nutzlos. Mit dem folgenden Code erhalte ich eine Fehlermeldung: "'CNCopyCurrentNetworkInfo' ist nicht verfügbar, da es iOS-spezifisch ist. Was ist das Mac OS Äquivalent?Abrufen des WiFi-Netzwerks in Swift 3

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)! 
      } 
     } 
    } 

Antwort

0

verwendete ich die Code unten, um die aktuelle SSID zu erhalten , nach der Überprüfung der Internetverbindung.

import CoreWLAN 

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

Verwendung Antwort von Quinn, der Gott bei Apple Networking:

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

hier kopiert:

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 
    } 
} 
+0

CNCopyCurrentNetworkInfo ist nur in IOS und tvOS entsprechend der [Dokumentation] (https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo). Ich finde nirgendwo ein Analogon für macOS. – user2625833