Versuch, die SSID des aktuellen Geräts zu erhalten. Ich habe viele Beispiele dafür gefunden, aber ich habe Probleme mit der automatischen Vervollständigung der CNCopySupportedInterfaces. Ich habe 'Systemkonfiguration importieren' oben in meiner schnellen Datei, aber keinen Erfolg. Kann nicht herausfinden, was ich falsch mache.
Sie benötigen import SystemConfiguration.CaptiveNetwork
CaptiveNetwork ist eine C-Header-Datei (.h) innerhalb des SystemConfiguration-Frameworks:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SystemConfiguration.framework/Headers/CaptiveNetwork.h
Wenn Sie Objective-C kennen, geht das tiefer:
iPhone erhalten SSID ohne private Bibliothek
Auch die automatische Vervollständigung ist nicht zufrieden mit Legacy-Globals. es will nur Klassen auf oberster Ebene. Wahrscheinlich weil es einfach zu viele @ # $ @ # Globals gibt.
Oh, und Sie müssen dieses wunderbare Snippet schreiben, um es zum Laufen zu bringen:
%Vor%ANHANG FÜR SWIFT 2.2 und 3.0
Die Überleitung wurde für CFxxx
-Datentypen vereinfacht und komplizierter gemacht, und jetzt wird das Auspacken und viele Überfahrten erforderlich, aber keine Retain-Aufrufe. Ich weiß nicht, dass Swift 2 die Dinge einfacher gemacht hat, aber es ist ziemlich klar, was vor sich geht, und das nil
hilft uns, den Simulator zu identifizieren. Die andere Antwort verwendet eine Menge Bit-Casting und unsichere Operationen, die nicht-Swiftian scheint, also biete ich dies an.
[Auch nach 10 Minuten begann die automatische Vervollständigung für CNxxx zu funktionieren. Offensichtlich verdaut ein Hintergrundthread Tausende von Globals in SourceKit.]
Ausgabe bei Erfolg:
SSIDDATA: & lt; 57696c6d 79 & gt;
BSSID: 12: 34: 56: 78: 9a: bc
SSID: YourSSIDHere
In Swift 2.0 / iOS 9 ist das API CaptiveNetwork (fast) weg oder abgeschrieben. Ich kontaktierte Apple bezüglich dieses Problems und ich dachte, wir könnten stattdessen den NEHotspotHelper verwenden (oder sollten). Ich habe heute eine Antwort von Apple erhalten: Man sollte weiterhin CaptiveNetwork und die zwei relevanten APIs verwenden (auch wenn sie dort als abgeschrieben markiert sind):
%Vor% Der Benutzer braime hat ein aktuelles Code-Snippet für dieses Problem auf Ray Wenderlich-Foren
Funktioniert perfekt für mich.
Schnell:
%Vor% Dann print(currentSSIDs())
, funktioniert nicht am Simulator, nur echte Geräte.
Entnommen aus Ссылка