Holen Sie sich die SSID in Swift 2
Ich versuche, um diesen code verwenden, um die SSID
import Foundation
import SystemConfiguration.CaptiveNetwork
public class SSID {
class func getSSID() -> String{
var currentSSID = ""
let interfaces = CNCopySupportedInterfaces()
if interfaces != nil {
let interfacesArray = interfaces.takeRetainedValue() as [String : AnyObject]
if interfacesArray.count > 0 {
let interfaceName = interfacesArray[0] as String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary!
currentSSID = interfaceData[kCNNetworkInfoKeySSID] as! String
let ssiddata = NSString(data:interfaceData[kCNNetworkInfoKeySSIDData]! as! NSData, encoding:NSUTF8StringEncoding) as! String
//ssid data from hex
print(ssiddata)
}
}
}
return currentSSID
}
}
Aber immer eine Fehlermeldung in dieser Zeile
let interfacesArray = interfaces.takeRetainedValue() as [String : AnyObject]
Den Fehler
Value of type 'CFArray?' has no member 'takeRetainedValue'
Vielen Dank für Ihre Hilfe
Wahrscheinlich können Sie einfach entfernen Sie die
ich löschte die .takeRetainedValue (), aber jetzt ich bin immer ein EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe), wenn ich versuche um den code zu testen
Leider kann ich dir nicht helfen mit, dass. Ich habe nicht ein gekoppeltes Netzwerk, um den code zu testen.
keine Sorge, trotzdem danke
Herzlich willkommen auf StackOverflow! Ich habe formatiert Ihren code, so passt er in einen normalen Fenster; aber möchten Sie vielleicht, um ihm einen anderen pass für die sehr lange Zeilen gibt. Viel Glück!
take(Un)RetainedValue()
telefonieren, weil die Funktion nicht zurückkehren, nicht verwaltete Objekte mehr in Swift 2. Siehe stackoverflow.com/questions/30740000/... für eine ähnliche Q&A.ich löschte die .takeRetainedValue (), aber jetzt ich bin immer ein EXC_BREAKPOINT (EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe), wenn ich versuche um den code zu testen
Leider kann ich dir nicht helfen mit, dass. Ich habe nicht ein gekoppeltes Netzwerk, um den code zu testen.
keine Sorge, trotzdem danke
Herzlich willkommen auf StackOverflow! Ich habe formatiert Ihren code, so passt er in einen normalen Fenster; aber möchten Sie vielleicht, um ihm einen anderen pass für die sehr lange Zeilen gibt. Viel Glück!
InformationsquelleAutor Oswaldo Rodriguez | 2015-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies kann helfen, Sie (getestet auf Swift 2):
Nahm ich angepasst und den code von Ray Wenderlich Website (einst war hier:
Abrufen SSID in iOS9 aber jetzt ist der thread wurde entfernt vom Ort)
iOS 12
Aktivieren Sie den Zugriff auf WLAN-Informationen von Fähigkeiten.
Swift4.2
CNCopySupportedInterfaces
gibt es nil zurück auf simulator. Sie sollten daher prüfen, obinterfaces
ist nicht null.Ja, eigentlich habe ich nicht diese Möglichkeit in Betracht gezogen. Vielleicht ist Sie besser überprüfen, wenn die app läuft im simulator, und wieder eine "fake" - SSID in diesem Fall (siehe makro #wenn TARGET_IPHONE_SIMULATOR)
Es ist viel einfacher, einfach nur zu sagen:
if let interfaces:CFArray! = CNCopySupportedInterfaces()
Beachten Sie, dass CaptiveNetwork war veraltet in iOS 9.0. Also ich würde vorschlagen, mit einer alternativen Lösung.
Nicht mehr deprecated in iOS 10 stackoverflow.com/a/33132529/2865234 @MattLeFleur
InformationsquelleAutor
Dies ist meine Lösung Swift 3 iOS 10 und es funktioniert gut mit Xcode 8
:
PS: Achtung es nicht funktioniert am simulator
Dies funktioniert perfekt in iOS 10, mittels Swift-3. Danke!!
InformationsquelleAutor
Alle präsentierten im moment Lösungen scheint ziemlich Komplex, mit hässlichen, unsicheren Typumwandlungen.
War ich in der Lage, Handwerk solchen prägnanten Lösung (keine schwarze Magie):
Aber wir haben keine anderen Optionen (siehe hier und viele Male auf die SO).
InformationsquelleAutor
In Swift 3 (im real-Gerät und simulator):
Verwendung:
InformationsquelleAutor
In swift 2, Sie haben nicht nennen
takeRetainedValue
.Ersetzen Sie den code
interfaces.takeRetainedValue() as [String : AnyObject]
mitArray(arrayLiteral: interfaces)
.Auch daran denken, ändern Sie den code
interfacesArray[0] as String
inString(interfacesArray[0])
.Vollständigen code :
}
InformationsquelleAutor
Swift 4-version
InformationsquelleAutor
Folgende Funktion Rückkehr der WLAN-name und die Mac-Adresse
Dieser code funktioniert einwandfrei. Beachten Sie, dass einige Warnung in Ihrer Entwicklung Ziel - >= iOS9
InformationsquelleAutor
https://stackoverflow.com/users/3108877/rob's Antwort -- kürzere version
InformationsquelleAutor
Finden Sie eine andere Antwort mit aktualisierten Swift-standards von @japes Antwort, die unterstützt sowohl Swift 3 und Swift 4. Leer zurück
""
auf Simulatoren.InformationsquelleAutor