2012-06-05 1 views
22

Sto scrivendo un'app che si collega tramite WiFi a un dispositivo proprietario. Il dispositivo proprietario funge da punto di accesso WiFi.Intervallo sonda WiFi iOS

Quando il dispositivo si spegne, la connessione WiFi è terminata, come mi aspetterei.

L'iPhone continua a inviare richieste di sondaggi, alla ricerca di reti a cui connettersi. Segue un algoritmo di backoff esponenziale per l'invio di sonde.

Il mio problema è che alla fine gli intervalli tra le richieste di probe inviate dall'iPhone sono più lunghi del timeout sul mio dispositivo, quindi non effettuano alcuna connessione.

Sto utilizzando il codice Reachability e funziona come mi aspetterei.

Sembra che premendo il pulsante Home si ripristini il backoff e si invii immediatamente una richiesta di sonda. Qualcuno sa di come la mia app possa fare qualcosa di simile?

Grazie per qualsiasi aiuto.

+0

Bella prima domanda. Riassunto: stai cercando un metodo per un'app per dire a iOS "se non sei connesso al WiFi, guarda ora!". –

+2

Hai provato ad avviare una connessione di rete? – Antzi

+1

Che dire di Bonjour? è possibile implementarlo sul dispositivo proprietario? – Andrea

risposta

0

In qualche modo ho sperimentato una situazione simile per verificare se il dispositivo era connesso in una specifica connessione VPN. L'approccio era di eseguire il ping su una macchina nella rete locale, tramite ping standard o implementando un servizio Web ping.

Se non si dispone di un back-end nella rete locale, il più semplice sarebbe il ping. È possibile controllare il seguente esempio di codice dal sito degli sviluppatori di Apple: http://developer.apple.com/library/mac/#samplecode/SimplePing/Introduction/Intro.html

0

Ho il sospetto che, se di riconfigurare il collegamento (re-impostare la configurazione WiFi) nella vostra applicazione che l'iPhone sarebbe riavviare la scansione senza il backoff. Quindi la tua app potrebbe tenere traccia di quanto tempo è trascorso da quando la connessione è stata persa e quindi riconfigurare il collegamento dopo un intervallo di tempo appropriato. Forse dovresti riconfigurare su un SSID diverso e poi tornare indietro, a seconda di quanto siano intelligenti le librerie iOS.

0

Non sono sicuro, se ho capito bene. Vuoi verificare se il dispositivo è ancora connesso al punto di accesso?

Ho creato un'app per connettersi a uno scanner tramite wifi, lo scanner funge da punto di accesso. per questo controllo se il SSID al quale il dispositivo è attualmente connesso è quello dello scanner. per verificare CurrentSSID è possibile utilizzare il seguente codice:

+(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"];  
} 

speranza che aiuta.

0

Temo che non ci sia modo di farlo senza essere rifiutato durante la revisione (si potrebbe leggere come accedere allo SBWifiManager). Apple non abilita in alcun modo l'accesso al gestore wifi dall'ambiente sandbox. Ho riscontrato un problema simile collegando il mio dispositivo a vari punti di accesso (per l'individuazione con richiesta sonda), fino ad ora con iOS 7 le richieste della sonda sono state inviate tra enormi intervalli (anche 15 minuti). Prova a modificare i tuoi punti di accesso.

1

Invece di eseguire il ping di Internet ogni volta con Raggiungibilità, eseguire il ping di un host sulla rete locale come il server DNS o il router (192.168.1.1).