iOS: cómo conectarse mediante progtwigción a una networking WiFi dado el SSID y la contraseña usando una biblioteca privada / de terceros

Buen día. Estoy intentando replicar una aplicación de Android existente que hice a iOS. En mi aplicación, debería poder conectarme a una networking WiFi dada el SSID y la Contraseña. El SSID y la Contraseña pueden ser codificados o pueden ser ingresados ​​por el usuario. Estaba revisando Internet para investigar cómo se puede hacer esto en el iOS; sin embargo, parece que este comportamiento es muy desalentado y que no hay forma de hacerlo utilizando bibliotecas públicas / documentadas que no rechacen su aplicación. la tienda de aplicaciones

Lo que pasa es que voy a utilizar esta aplicación personalmente y no planeo enviarla a la App Store, así que está bien si utilizo bibliotecas externas. Si mis amigos quisieran usarlo, podría exportar una ipa empresarial y darles instrucciones sobre cómo instalarlo.

Al search, parecía que MobileWifi.framework era un buen candidato. Sin embargo, no parece que haya una forma directa de usar esta biblioteca para conectarse a una networking WiFi dada el SSID y la Contraseña.

¿Hay alguien que haya intentado con éxito conectarse a una networking Wifi dada la SSID y la contraseña? Cualquier ayuda es muy apreciada.

Al contrario de lo que ves aquí y en otros lugares, puedes hacerlo. Es difícil hacer lo suficientemente bonito para los usuarios normales, pero si no es así, es muy fácil codificar. Es una cosa de administración empresarial, pero cualquiera puede hacerlo. Busca "Perfiles de connection". Comcast lo hace en su aplicación de iOS para configurar sus puntos de acceso para usted, por ejemplo.

Básicamente, es un documento XML que le permite ingerir el dispositivo a través de Safari o Mail. Hay muchos trucos y la experiencia del usuario no es genial, pero puedo confirmar que funciona en iOS 10 y no requiere jailbreak. Utilizas Configurator para generar el XML, y sugiero este hilo para servirlo (pero la gente no lo encuentra porque no es específicamente sobre Wi-Fi), y este blog para consultar si está instalado, que es sorprendentemente no trivial, pero funciona de hecho.

He respondido esta pregunta muchas veces, pero o bien no tengo suficiente representante o soy demasiado tonto para averiguar cómo cerrar las preguntas como duplicado para que se puedan encontrar mejores respuestas con más facilidad.

Respuesta corta, no.


Respuesta larga 🙂

Esta pregunta se hizo muchas veces:

  • Conéctate a Wi-Fi mediante progtwigción en ios
  • conectarse a un Wi-Fi específico mediante progtwigción en ios con un SSID y contraseña determinados
  • ¿Dónde encuentro el código iOS Obj-C para escanear y conectarse a wifi (API privada)
  • Conexión automática mediante progtwigción a WiFi iOS

La respuesta más interesante parece estar en el primer enlace que apunta a un proyecto GitHub: wifiAssociate . Sin embargo, algunos en el tercer enlace explican que esto ya no funciona con iOS8, por lo que podría tener dificultades para que funcione.
Además, el iDevice debe estar jailbroken.

Con iOS 11, Apple proporcionó una API pública que puede usar para join a una networking Wi-Fi sin necesidad de salir de su aplicación.

La class que necesitará usar se llama NEHotspotConfiguration .

Para usarlo, debe habilitar la capacidad de Hotspot en sus capacidades de aplicaciones ( Agregar capacidades ). Rápido ejemplo de trabajo:

 NEHotspotConfiguration *configuration = [[NEHotspotConfiguration alloc] initWithSSID:@“SSID-Name”]; configuration.joinOnce = YES; [[NEHotspotConfigurationManager shanetworkingManager] applyConfiguration:configuration completionHandler:nil]; 

Esto le pedirá al usuario que se una a la networking Wi-Fi de "SSID-Name". Permanecerá conectado a WiFi hasta que el usuario abandone la aplicación.

Esto no funciona con el simulador que necesita para ejecutar este código con un dispositivo real para que funcione.

Más información aquí: https://developer.apple.com/documentation/networkextension/nehotspotconfiguration

Podemos conectar mediante progtwigción networkinges Wi-Fi después de IOS 11. Puede conectar Wi-Fi usando ssid y contraseña como sigue.

Rápido

 var configuration = NEHotspotConfiguration.init(ssid: "wifi name", passphrase: "wifi password", isWEP: false) configuration.joinOnce = true NEHotspotConfigurationManager.shanetworking.apply(configuration) { (error) in if error != nil { //an error accunetworking print(error?.localizedDescription) } else { //success } } 

Puede conectarse a wifi usando Xcode 9 y swift 4

 let WiFiConfig = NEHotspotConfiguration(ssid: "Mayur1", passphrase: "123456789", isWEP: false) WiFiConfig.joinOnce = false NEHotspotConfigurationManager.shanetworking.apply(WiFiConfig) { error in // Handle error or success print(error?.localizedDescription) }