ATUALIZAÇÃO PARA iOS 10 e superior
CNCopySupportedInterfaces não é mais reprovado no iOS 10. ( Referência da API )
Você precisa importar SystemConfiguration / CaptiveNetwork.he adicionar SystemConfiguration.framework às Bibliotecas vinculadas do seu destino (nas fases de construção).
Aqui está um trecho de código no swift (resposta 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
}
}
( Importante: CNCopySupportedInterfaces retorna nulo no simulador.)
Para o Objective-c, veja a resposta de Esad aqui e abaixo
+ (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;
}
ATUALIZAÇÃO PARA iOS 9
A partir do iOS 9, o Captive Network está obsoleto *. ( fonte )
* Não é mais descontinuado no iOS 10, veja acima.
É recomendável que você use NEHotspotHelper ( origem )
Você precisará enviar um e-mail para a apple em networkextension@apple.com e solicitar direitos. ( fonte )
Código de exemplo ( não é meu código. Veja a resposta 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;
}
Nota lateral: Sim, eles preteriram o CNCopySupportedInterfaces no iOS 9 e reverteram sua posição no iOS 10. Conversei com um engenheiro de rede da Apple e a reversão ocorreu depois que tantas pessoas arquivaram Radares e falaram sobre o problema nos fóruns de desenvolvedores da Apple.