AKTUALIZACJA DLA iOS 10 i nowszych
CNCopySupportedInterfaces nie jest już przestarzałe w iOS 10. (dokumentacja API )
Musisz zaimportować SystemConfiguration / CaptiveNetwork.h i dodać SystemConfiguration.framework do połączonych bibliotek celu (w fazie kompilacji).
Oto fragment kodu w języku swift (odpowiedź RikiRiocmy) :
import Foundation
import SystemConfiguration.CaptiveNetwork
public class SSID {
class func fetchSSIDInfo() -> String {
var currentSSID = ""
if let interfaces = CNCopySupportedInterfaces() {
for i in 0..<CFArrayGetCount(interfaces) {
let interfaceName: UnsafePointer<Void> = CFArrayGetValueAtIndex(interfaces, i)
let rec = unsafeBitCast(interfaceName, AnyObject.self)
let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)")
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData! as Dictionary!
currentSSID = interfaceData["SSID"] as! String
}
}
}
return currentSSID
}
}
( Ważne: CNCopySupportedInterfaces zwraca zero na symulatorze).
W przypadku Objective-c zobacz odpowiedź Esada tutaj i poniżej
+ (NSString *)GetCurrentWifiHotSpotName {
NSString *wifiName = nil;
NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
for (NSString *ifnam in ifs) {
NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
if (info[@"SSID"]) {
wifiName = info[@"SSID"];
}
}
return wifiName;
}
AKTUALIZACJA DLA iOS 9
Od wersji iOS 9 Captive Network jest przestarzała *. ( źródło )
* Nie jest już przestarzała w iOS 10, patrz wyżej.
Zaleca się używanie NEHotspotHelper ( źródło )
Będziesz musiał wysłać e-mail do Apple na adres networkextension@apple.com i poprosić o uprawnienia. ( źródło )
Przykładowy kod (to nie mój kod. Zobacz odpowiedź Pablo A ):
for(NEHotspotNetwork *hotspotNetwork in [NEHotspotHelper supportedNetworkInterfaces]) {
NSString *ssid = hotspotNetwork.SSID;
NSString *bssid = hotspotNetwork.BSSID;
BOOL secure = hotspotNetwork.secure;
BOOL autoJoined = hotspotNetwork.autoJoined;
double signalStrength = hotspotNetwork.signalStrength;
}
Uwaga boczna: tak, wycofali oni CNCopySupportedInterfaces w iOS 9 i odwrócili swoje stanowisko w iOS 10. Rozmawiałem z inżynierem sieciowym Apple i odwrócenie nastąpiło po tym, jak wiele osób złożyło radary i wypowiedziało się o problemie na forach Apple Developer.