Swift CNCopySupportedInterfaces nicht gültig

8

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.

    
shreddish 31.07.2015, 21:47
quelle

3 Antworten

15

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.

%Vor%

[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

    
BaseZen 31.07.2015, 22:37
quelle
8

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 :

%Vor%

Funktioniert perfekt für mich.

    
hibento 28.09.2015 23:44
quelle
0

Schnell:

%Vor%

Dann print(currentSSIDs()) , funktioniert nicht am Simulator, nur echte Geräte.

Entnommen aus Ссылка

    
Juan Boero 06.12.2017 20:14
quelle

Tags und Links