2015-07-30 15 views
15

Chcę uzyskać wszystkie dostępne sieci Wi-Fi w regionie i ich wartość SSID. Ale problem polega na tym, jak uzyskać identyfikator SSID całej sieci Wi-Fi, nawet jeśli nie jestem z nią połączony.Jak uzyskać dostępną nazwę sieci Wi-Fi w iOS przy użyciu Swift

+0

@EnricoSusatyo mam ten sam problem nie mogę mieć uzyskać wszystkie dostępne listy WiFi. –

+0

Niełatwo. Skanowanie sieci Wi-Fi jest zagrożeniem bezpieczeństwa. – Sulthan

+3

Znalazłem podobne pytania na SO z szybkiego wyszukiwania google, powszechną odpowiedzią jest, że podczas gdy nie możesz mieć z powodu zasad Jabłka – RubberDucky4444

Odpowiedz

1

Oto moja klasa, która drukuje nazwę sieci WIFI

import UIKit 
import Foundation 
import SystemConfiguration.CaptiveNetwork 

class FirstView: UIViewController 
{ 
    @IBOutlet weak var label: UILabel! 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     let ssid = self.getWiFiName() 
     print("SSID: \(ssid)") 
    } 

    func getWiFiName() -> String? { 
     var ssid: String? 
     if let interfaces = CNCopySupportedInterfaces() as NSArray? { 
      for interface in interfaces { 
       if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? { 
        ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String 
        break 
       } 
      } 
     } 
     return ssid 
    } 
} 
+2

To tylko wydaje się wskazywać podłączony identyfikator SSID interfejsu. – picciano

+0

'var ssid =" "; (CNCopySupportedInterfaces() jako? [CFString]) ?. forEach ({ ssid = (CNCopyCurrentNetworkInfo ($ 0) jako? [String: Any])? [KCNNetworkInfoKeySSID jako ciąg] jako? String ?? ""}) ' –

6

pierwszy;

import SystemConfiguration.CaptiveNetwork

Następnie;

func getInterfaces() -> Bool { 
    guard let unwrappedCFArrayInterfaces = CNCopySupportedInterfaces() else { 
     print("this must be a simulator, no interfaces found") 
     return false 
    } 
    guard let swiftInterfaces = (unwrappedCFArrayInterfaces as NSArray) as? [String] else { 
     print("System error: did not come back as array of Strings") 
     return false 
    } 
    for interface in swiftInterfaces { 
     print("Looking up SSID info for \(interface)") // en0 
     guard let unwrappedCFDictionaryForInterface = CNCopyCurrentNetworkInfo(interface) else { 
      print("System error: \(interface) has no information") 
      return false 
     } 
     guard let SSIDDict = (unwrappedCFDictionaryForInterface as NSDictionary) as? [String: AnyObject] else { 
      print("System error: interface information is not a string-keyed dictionary") 
      return false 
     } 
     for d in SSIDDict.keys { 
      print("\(d): \(SSIDDict[d]!)") 
     } 
    } 
    return true 
} 
+1

To zdaje się zwracać aktualnie podłączoną sieć Wi-Fi przynajmniej na iOS 11.2.2 na iPhone 7 – DCIndieDev

Powiązane problemy