, CaptiveNetwork SystemConfiguration çerçevesinde bir C başlık dosyası (.h) 'dir
Ayrıca iPhone get SSID without private library
, otomatik tamamlama: ayrıntılı bilgileri daha Eski mirastan memnun değildir; Sadece üst seviyedeki dersleri istiyor. Muhtemelen sadece # @ $ @ # globals olduğu için.
Oh, ve işe almak için bu harika pasajı yazmak zorunda:
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]!)")
}
}
REVİZE EK SWIFT 2.2 İÇİN ve 3,0
Köprü henüz basitleştirilmiş için yeniden karmaşık olmuştur CFxxx
datatypes ve şimdi unwrapping ve çok fazla feribot gerekiyor ama aramaları saklamıyor. Swift 2'nin işleri daha kolay hale getirdiğini bilmiyorum ama ne olduğu oldukça açık, artı nil
simülatörü tanımamıza yardımcı oluyor. Diğer cevapta, Swiftian olmayan gibi görünen çok fazla bit döküm ve güvensiz operasyonlar kullanılıyor.
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
}
[Ayrıca, 10 dakika sonra otomatik tamamlama CNxxx için çalışmaya başladı. Açıkça, bir arka plan iplik yoğun bir şekilde SourceKit globals binlerce sindirilerek] başarı
Çıkış.
SSIDDATA: < 57696c6d 79>
BSSID: 12: 34: 56: 78: 9a: bc
SSID: Swift 2.0 YourSSIDHere
takeRetainedValue nedir Alındığı()? – Nilesh
ARC tarafından tutulan nesneleri kullanmayan eski C API'leriyle uyumluluk içindir. Nesneyi ARC kapsamında yönetime taşır, böylece artık ihtiyacınız olmadığında otomatik olarak serbest bırakılır. http://stackoverflow.com/questions/29048826/when-to-use-takeunretainedvalue-or-takeretainedvalue-to-retrieve-unmanaged-o – BaseZen
Swift 2.2 için Düzenlendi – BaseZen