2016-01-22 2 views
1

В настоящее время я пытаюсь отобразить SSID подключенного Wi-Fi пользователя и сравнить его с конкретным SSID, например, установленным SSID является «WirelessHotspot».Отображение SSID в приложении iOS с использованием Swift

Когда подключенный WiFi пользователя является «WirelessHotspot», приложение покажет, что оно подключено к правильному WiFi, а также отображает имя WiFi.

В настоящее время, я попробовал этот код, ссылки из Get SSID in Swift 2:

import UIKit 

import Foundation 
import SystemConfiguration.CaptiveNetwork 

public class SSID { 
    class func fetchSSIDInfo() -> String { 
     var currentSSID = "" 
     if let interfaces:CFArray! = CNCopySupportedInterfaces() { 
      for i in 0..<CFArrayGetCount(interfaces){ 
       let interfaceName: UnsafePointer<Void> = CFArrayGetValueAtIndex(interfaces, i) 
       let rec = unsafeBitCast(interfaceName, AnyObject.self) 
       let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)") 
       if unsafeInterfaceData != nil { 
        let interfaceData = unsafeInterfaceData! as Dictionary! 
        currentSSID = interfaceData["SSID"] as! String 

       } 
      } 
      self.networkname.text = String(currentSSID) 
     } 
     return currentSSID 
    } 
} 

class AttendanceScreen: UIViewController { 

    @IBOutlet weak var networkname: UILabel! 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

Однако этот код:

self.networkname.text = String(currentSSID) 

Вернется ошибка:

Type 'SSID' has no member 'networkname' 

Итак, как Я реализую это в Swift для iOS 9? Заранее спасибо!

+0

Возможно, вы захотите посмотреть здесь: http://codereview.stackexchange.com/questions/78318/getting-wifi-ssid-on-ios-in-swift – luk2302

+0

Пожалуйста, [поиск] (http: // stackoverflow .com/search? q =% 5Bswift% 5D + ssid) перед публикацией. – rmaddy

+0

Как отобразить SSID в метке, я не могу отобразить SSID, коды также показывают, как получить SSID. Спасибо за ваш быстрый ответ! – Panda

ответ

1

Я понял, что было бы намного проще создать мост от Swift до Objective-C.

Импорт рамки:

#import <SystemConfiguration/CaptiveNetwork.h> 

код, чтобы получить идентификатор SSID подключенного WiFi пользователя:

func getMAC()->(success:Bool,ssid:String,mac:String){ 

    if let cfa: NSArray = CNCopySupportedInterfaces() { 
     for x in cfa { 
      if let dict = CFBridgingRetain(CNCopyCurrentNetworkInfo(x as! CFString)) { 
       let ssid = dict ["SSID"]! 
       let mac = dict["BSSID"]! 
       return (true, ssid as! String, mac as! String) 
      } 
     } 
    } 
    return (false,"","") 
} 

Печать и отображение в метке при необходимости:

let x = getMAC() 
    if x.success { 
     MAClabel = x.mac 
     SSIDlabel = x.ssid 
     print(x.mac) 
     print (x.ssid) 
    } 

Я надеюсь, что те, у кого есть этот вопрос, найдут это полезным!

Смежные вопросы