Intervalo de sonda WiFi de iOS

Estoy escribiendo una aplicación que se conecta a través de Wi-Fi a un dispositivo propietario. El dispositivo propietario actúa como un punto de acceso WiFi.

Cuando el dispositivo se apaga, la connection WiFi termina, como era de esperar.

El iPhone continúa enviando requestes de sondeo, buscando networkinges para conectarse. Sigue un algorithm de retroceso exponencial para enviar sondas.

Mi problema es que eventualmente los intervalos entre las requestes de sondeo enviadas por el iPhone son más largas que el time de espera en mi dispositivo, por lo que no hacen una connection.

Estoy usando el código de scope y funciona como lo esperaba.

Parece que presionar el button de inicio restablecerá el retroceso y enviará una request de sonda de inmediato. ¿Alguien sabe de una manera de hacer que mi aplicación haga algo similar?

Gracias por cualquier ayuda.

En lugar de hacer ping a Internet cada vez con Reachability, haga ping a un host en la networking local como el server DNS o el enrutador (192.168.1.1).

De alguna manera, experimenté una situación similar para comprobar si el dispositivo estaba conectado en una connection VPN específica. El enfoque era hacer ping a una máquina en la networking local, a través de ping estándar o implementar un service web ping.

Si no tiene un backend en su networking local, entonces lo más fácil sería el ping. Puede consultar el siguiente ejemplo de código en el sitio para desarrolladores de Apple: http://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html

Sospecho que si reconfigura la connection (vuelva a establecer la configuration WiFi) en su aplicación, el iPhone reiniciará el escaneo sin el retroceso. Por lo tanto, su aplicación puede hacer un seguimiento de cuánto time pasó desde que se perdió la connection y luego reconfigurar el enlace después de un período de time apropiado. Posiblemente deba reconfigurar a un SSID diferente y luego volver a cambiar, dependiendo de cuán inteligentes sean las bibliotecas de iOS.

No estoy tranquilo, si te comprendo bien. ¿Desea comprobar si el dispositivo todavía está conectado al punto de acceso?

He creado una aplicación para conectarme a un escáner a través de wifi, el escáner actúa como punto de acceso. para eso verifico si el SSID con el que el dispositivo está actualmente conectado es el del escáner. para verificar CurrentSSID puede usar el siguiente código:

+(NSString*)currentSSID { CFArrayRef myArray = CNCopySupportedInterfaces(); CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); if (!myDict) { return nil; } NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict; return [myDictionary objectForKey:@"SSID"]; } 

Espero que ayude.

Me temo que no hay forma de hacerlo sin ser rechazado durante la revisión (podría leer sobre cómo acceder al SBWifiManager ). Apple no habilita ninguna forma de acceder al administrador de wifi desde el entorno de sandbox. Tuve un problema similar al conectar mi dispositivo a varios puntos de acceso (para localizar con la request de sondeo), hasta ahora con el iOS 7 las requestes de sondeo se enviaron entre intervalos grandes (incluso 15 minutos). Intenta modificar tus puntos de acceso.