Uso de networking cautiva

Estoy investigando para encontrar la mejor manera de usar la networking cautiva para iOS. Parece que lo que esto hace, corrígeme si estoy equivocado, permite al usuario ingresar diferentes ssid y passwords que se pueden usar para el inicio de session automático cuando esa networking esté disponible. Si esto es así, cuál sería la mejor manera de lograr lo siguiente, leer SSL y contraseña de un usuario y conectarlo a esa networking wifi o incluso así es posible.

Hasta ahora todo lo que estoy haciendo es sacar la networking 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" ]); 

Una "Red cautiva" es una como la que encuentra en hoteles o Starbucks, donde la connection Wi-Fi está abierta, pero debe pasar por una página de inicio de session o "Acepto las condiciones" para conectarse a cualquier website.

Normalmente, cuando se conecta a una networking de este tipo, la aplicación Configuración de IOS colocará un formulario web para completar el inicio de session. El propósito de las API de CN es permitir que tu aplicación realice la authentication en lugar de crear un formulario web.

Su pregunta le pregunta acerca de la lectura del SSID por parte del usuario: esto no parece demasiado útil ya que la aplicación Configuración ya permite a los usuarios especificar un SSID arbitrario y luego iniciar session con una contraseña. La API de Captive Network solo sería útil si su aplicación sabe exactamente cómo iniciar session en la networking, en cuyo caso también puede conocer el SSID. Puede get la contraseña del usuario utilizando el NSTextField habitual.

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

Manejé esto genéricamente con un process de 2 pasos. La primera testing fue una testing de scope general, que falla si no hay una networking presente. En caso de falla, le advierto al usuario que se requiere una networking. Si la networking está presente, como segundo paso envío una request a mi server. Si se agota, le advierto al usuario que verifique la connection de networking a la que necesita atención.