Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
662 kez görüntülendi
ios development kategorisinde tarafından
tarafından yeniden kategorilendirildi
Merhaba Arkadaşlar,

Yapmak istediğim bir textField' in Touch Up Inside event'ında çevredeki aktif olan wifi leri aynen iphone lardaki gibi listeli bir şekilde göstererek seçilen wifi textField içerisinde nasıl gösterebilirim?

2 Cevaplar

0 oy
tarafından

bildiğim kadarıyla SystemConfiguration.CaptiveNetwork ile o an bağlı bulunulan wi-fi network'un SSID'si alınabiliyor ama tüm wi-fi listesinin alınabileceği sanmıyorum.
ayrıca SystemConfiguration.CaptiveNetwork'de ios9'da deprecated oldu.
belki bu işi yapabilen 3rd party libraryler vardır.

yukarıda bahsettiğim SystemConfiguration.CaptiveNetwork ile bağlı bulunulan wi-fi SSID'sini aşağıdaki örnekle alabilirsiniz mesela. (simulator'de çalışmaz gerçek cihaz üzerinde denemelisiniz.)

import UIKit
import SystemConfiguration.CaptiveNetwork


public var SSID: String? {
    get {
        if let interfaces = CNCopySupportedInterfaces() {
            let interfacesArray = interfaces.takeRetainedValue() as! [String]
            if let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfacesArray[0]) {
                let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary
                return interfaceData["SSID"] as? String
            }
        }

        return nil
    }
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if let string:String = SSID {
            println("currently Connected Wi-Fi:\(string)")
        }



        // Do any additional setup after loading the view, typically from a nib.
    }

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


}
tarafından
Cevap için teşekkür ederim yasin bey, fakat deneyebildiğim her yolu denedim ama

 let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary

bu satırdaki hatayı gideremedim bir türlü;
 
HATA:  Value of type 'CFDictionary' has no member 'takeRetainedValue'
tarafından
swift2 kullanıyorsanız problem olabilir. daha önce de dediğim gibi ios9'da SystemConfiguration.CaptiveNetwork deprecated oldu.
tarafından
Evet Swift 2 kullanıyorum, araştırdım biraz ama bir çözüm yoluna ulaşamadım galiba ios9 için bu konu netlik kazanmadi.
tarafından
dediğim gibi CaptiveNetwork ios9'da deprecetaed. açıkçası bu işi yapabileceğiniz 3rd party bir library varmıdır bilemiyorum. Bir araştırmanızı öneririm. Eğer bulursanız ve burada paylaşırsanız sevinirim.
tarafından
Tabiki ulasirsam bi sonuca paylaşacağım insaAllah. İyi çalışmalar
0 oy
tarafından
 
En İyi Cevap
func getNetworkInfo()->(success:Bool,ssid:String,mac:String){
        var currentSSID:String = ""
        var macAdrees:String = ""
        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
                print("currentSSID: "+currentSSID)
                macAdrees = interfaceData["BSSID"] as! String
                print("macAdrees: "+macAdrees)
            } else {
                currentSSID = ""
            }
        }

        return (succes, currentSSID, macAdrees)
    }
...