2012-04-17 9 views
9

Estoy investigando para encontrar la mejor forma de usar la red cautiva para iOS. Parece que lo que hace, corregirme si estoy equivocado, permite al usuario ingresar diferentes ssid y contraseñas que pueden usarse para el inicio de sesión automático cuando esa red esté disponible. Si esto es así, ¿cuál sería la mejor manera de lograr lo siguiente, leer el sid y la contraseña de un usuario y conectarlo a esa red wifi o eso es posible?Uso de red cautiva

Hasta ahora todo lo que estoy haciendo está sacando la red actualmente conectada con esto:

NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces(); 
id info = nil; 

for (NSString *ifnam in ifs) { 

    NSLog(@"ifnam = %@", ifnam); 

    info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge_retained CFStringRef)ifnam); 

    if (info && [info count]) { 
     break; 
    } 
} 

NSLog (@"SSID: %@", [ info objectForKey"@"SSID" ]); 

Respuesta

12

un "prisionero de red" es uno como te encuentras en hoteles o Starbucks, donde la conexión Wi-Fi está abierta, pero se necesita ir a través de una página de inicio de sesión o 'Acepto las condiciones' para conectarse a cualquier sitio web.

Normalmente, cuando se conecta a una red de este tipo, la aplicación de configuración de IOS colocará un formulario web para completar el inicio de sesión. El objetivo de las API CN es permitir que su aplicación realice la autenticación en lugar de crear un formulario web.

Su pregunta es acerca de cómo leer el SSID del usuario: esto no parece demasiado útil ya que la aplicación de configuración ya permite a los usuarios especificar un SSID arbitrario y luego iniciar sesión con una contraseña. La API de red cautiva solo sería útil si tu aplicación sabe exactamente cómo iniciar sesión en la red, en cuyo caso también puede conocer el SSID. Puede obtener la contraseña del usuario utilizando el NSTextField habitual.

Tenga en cuenta también que IOS no inicia su aplicación cada vez que la red está conectada: esta API solo funciona cuando su aplicación ya se está ejecutando.

+0

Gran respuesta. Al usar la referencia de CaptiveNetwork en su aplicación, ¿su usuario de la aplicación necesita primero seleccionar wifi en la configuración o no? Espero que solo tengas que iniciar la aplicación, y si StarbuckWifi, p. Ya lo detecta iOS, puedo autenticarme y unirme ... sin tocar Configuración. – 3pic

+0

Creo que el usuario debe seleccionar la red wifi específica, luego tener la aplicación que ha registrado la autenticación completa. – Bryan

1

Manejé esto genéricamente con un proceso de 2 pasos. La primera prueba fue una prueba de accesibilidad general, que falla si no hay una red presente. En caso de error, le aviso al usuario que se requiere una red. SI la red está presente, como el segundo paso, envío una solicitud a mi servidor. Si se agota el tiempo de espera, le advierto al usuario que verifique la conexión de red que necesita atención.

Cuestiones relacionadas