MISE À JOUR POUR iOS 10 et plus
CNCopySupportedInterfaces n'est plus obsolète dans iOS 10. ( Référence API )
Vous devez importer SystemConfiguration / CaptiveNetwork.h et ajouter SystemConfiguration.framework aux bibliothèques liées de votre cible (sous les phases de construction).
Voici un extrait de code en swift (réponse de 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
}
}
( Important: CNCopySupportedInterfaces renvoie nul sur le simulateur.)
Pour Objective-c, voir la réponse d'Esad ici et ci-dessous
+ (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;
}
MISE À JOUR POUR iOS 9
À partir d'iOS 9, le réseau captif est obsolète *. ( source )
* N'est plus obsolète dans iOS 10, voir ci-dessus.
Il est recommandé d'utiliser NEHotspotHelper ( source )
Vous devrez envoyer un e-mail à apple à networkextension@apple.com et demander des droits. ( source )
Exemple de code ( pas mon code. Voir la réponse de 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;
}
Note latérale: Oui, ils ont désapprouvé CNCopySupportedInterfaces dans iOS 9 et ont inversé leur position dans iOS 10. J'ai parlé avec un ingénieur réseau Apple et l'inversion est survenue après que tant de personnes ont déposé des radars et ont parlé du problème sur les forums des développeurs Apple.