iOS: cómo consultar el estado Wi-Fi

¿Es posible consultar el estado WiFi (activado / desactivado) en iOS mediante progtwigción? La consulta debe devolver true cuando WiFi está habilitado y el dispositivo no está conectado a ninguna networking.

EDIT: Soy consciente de la funcionalidad proporcionada por la class Reachability y, en la medida en que entiendo, no reconoce el estado habilitado pero no conectado de WIFI. Es decir, el siguiente código devolverá NetworkStatus NotReachable , que no es lo que necesito.

 Reachability* r = [Reachability reachabilityForLocalWiFi]; NetworkStatus ns = [r currentReachabilityStatus]; 

Descargo de responsabilidad: la siguiente solución no es sólida y no hay garantía de que pasará AppStore . Puede encontrar una descripción detallada junto con una muestra completa del código de trabajo de Enigmatic Ape aquí .

La única solución viable que pude encontrar hasta ahora es solicitar y evaluar una list de interfaces disponibles usando la function getifaddrs . La list se ve diferente en caso de que WiFi esté deshabilitado / habilitado / conectado:

 NSCountedSet * cset = [NSCountedSet new]; struct ifaddrs *interfaces; if( ! getifaddrs(&interfaces) ) { for( struct ifaddrs *interface = interfaces; interface; interface = interface->ifa_next) { if ( (interface->ifa_flags & IFF_UP) == IFF_UP ) { [cset addObject:[NSString stringWithUTF8String:interface->ifa_name]]; } } } freeifaddrs(interfaces); return [cset countForObject:@"awdl0"] > 1 ? WIFI_ON : WIFI_OFF; 

Puede usar Reachability para comprobar esto. Importa los files, entonces puedes hacer esto:

 Reachability *networkReachability = [Reachability reachabilityWithHostName:@"http://google.com]; NetworkStatus networkStatus = [networkReachability currentReachabilityStatus]; if (networkStatus == ReachableViaWiFi) { //wifi } 

Podrías usar la class Reachability que Apple ha proporcionado aquí, luego verifica esto:

[Reachability reachabilityForLocalWiFi];