आप की जरूरत है import SystemConfiguration.CaptiveNetwork
कवर के नीचे, CaptiveNetwork एक सी हेडर फाइल (ज) कि SystemConfiguration ढांचे के भीतर है
iPhone get SSID without private library
इसके अलावा, स्वत: पूर्ण: अधिक गहराई में विरासत ग्लोबल्स से खुश नहीं है; यह केवल शीर्ष स्तर पर वर्ग चाहता है। शायद क्योंकि बहुत सारे @ # $ @ # ग्लोबल्स हैं।
ओह, और आप यह काम करने के लिए प्राप्त करने के लिए इस अद्भुत टुकड़ा लिखने के लिए है:
for interface in CNCopySupportedInterfaces().takeRetainedValue() as! [String] {
println("Looking up SSID info for \(interface)") // en0
let SSIDDict = CNCopyCurrentNetworkInfo(interface).takeRetainedValue() as! [String : AnyObject]
for d in SSIDDict.keys {
println("\(d): \(SSIDDict[d]!)")
}
}
परिशिष्ट स्विफ्ट 2.2 के लिए और 3,0
ब्रिजिंग अभी तक सरलीकृत किया गया है के लिए फिर से जटिल CFxxx
डेटाटाइप और अब अनचाहे और बहुत सारे नौकायन की आवश्यकता है लेकिन कोई कॉल नहीं है। मुझे नहीं पता कि स्विफ्ट 2 ने चीजों को आसान बना दिया है, लेकिन यह स्पष्ट रूप से स्पष्ट है कि क्या हो रहा है, साथ ही nil
सिम्युलेटर की पहचान करने में हमारी सहायता करता है। दूसरा जवाब गैर-स्विफ्टियन लगता है जो बहुत ही बिट-कास्टिंग और असुरक्षित संचालन का उपयोग करता है, इसलिए मैं इसे पेश करता हूं।
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
}
[इसके अलावा, 10 मिनट के बाद, ऑटो-पूर्ण ने CNxxx के लिए काम करना शुरू कर दिया। जाहिर है एक पृष्ठभूमि धागा जलदी SourceKit में वैश्विक के हजारों पचाने है] सफलता पर
आउटपुट:।
SSIDDATA: < 57696c6d 79>
BSSID: 12: 34: 56: 78: 9a: बीसी
SSID: YourSSIDHere
takeRetainedValue क्या है से लिया()? – Nilesh
यह पुराने सी एपीआई के साथ संगतता के लिए है जो एआरसी द्वारा बनाए गए ऑब्जेक्ट्स का उपयोग नहीं करते हैं। यह ऑब्जेक्ट को एआरसी के तहत प्रबंधन में लाता है, इसलिए जब आपको इसकी आवश्यकता नहीं होती है तो इसे स्वचालित रूप से रिलीज़ किया जाएगा। http://stackoverflow.com/questions/29048826/when-to-use-takeunretainedvalue-or-takeretainedvalue-to-retrieve-unmanaged-o – BaseZen
स्विफ्ट 2.2 – BaseZen