AGGIORNAMENTO PER iOS 10 e versioni successive
CNCopySupportedInterfaces non è più obsoleto in iOS 10. ( Riferimento API )
Devi importare SystemConfiguration / CaptiveNetwork.h e aggiungere SystemConfiguration.framework nelle librerie collegate del tuo target (in fase di costruzione).
Ecco uno snippet di codice in rapido (la risposta di RikiRiocma) :
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
}
}
( Importante: CNCopySupportedInterfaces restituisce zero sul simulatore.)
Per Objective-c, vedi la risposta di Esad qui e sotto
+ (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;
}
AGGIORNAMENTO PER iOS 9
A partire da iOS 9 Captive Network è obsoleto *. ( fonte )
* Non più deprecato in iOS 10, vedi sopra.
Si consiglia di utilizzare NEHotspotHelper ( fonte )
Dovrai inviare un'e-mail a apple all'indirizzo networkextension@apple.com e richiedere i diritti. ( fonte )
Codice di esempio ( non il mio codice. Vedi la risposta di 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;
}
Nota a margine: Sì, hanno deprecato CNCopySupportedInterfaces in iOS 9 e invertito la loro posizione in iOS 10. Ho parlato con un ingegnere di rete Apple e l'inversione è arrivata dopo che molte persone hanno presentato Radar e hanno parlato del problema sui forum degli sviluppatori Apple.