Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Aktif Wi-fi' leri Gösterme

0 oy
165 kez görüntülendi
7, Kasım, 2015 ios development kategorisinde ibolat tarafından soruldu
7, Kasım, 2015 ibolat 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
9, Kasım, 2015 yasin tarafından cevaplandı

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.
    }


}
10, Kasım, 2015 ibolat tarafından yorumlandı
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'
10, Kasım, 2015 yasin tarafından yorumlandı
swift2 kullanıyorsanız problem olabilir. daha önce de dediğim gibi ios9'da SystemConfiguration.CaptiveNetwork deprecated oldu.
10, Kasım, 2015 ibolat tarafından yorumlandı
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.
10, Kasım, 2015 yasin tarafından yorumlandı
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.
10, Kasım, 2015 ibolat tarafından yorumlandı
Tabiki ulasirsam bi sonuca paylaşacağım insaAllah. İyi çalışmalar
0 oy
31, Mayıs, 2016 ibolat tarafından cevaplandı
 
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)
    }
...