He buscado pero no puedo ver una pregunta similar.La accesibilidad a veces falla, incluso cuando tenemos una conexión a Internet
Agregué un método para verificar la conexión a Internet según el ejemplo de Accesibilidad. Funciona la mayor parte del tiempo, pero cuando se instala en el iPhone, a menudo falla incluso cuando tengo conectividad a Internet (solo cuando estoy en 3G/EDGE - WiFi está bien).
Básicamente el código de abajo devuelve NO.
Si cambio a otra aplicación, diga Correo o Safari, y me conecto, luego vuelvo a la aplicación, luego el código dice que se puede acceder a Internet. Parece que necesita un 'empujoncito'.
¿Alguien ha visto esto antes? ¿Algunas ideas?
Muchas gracias James
+ (BOOL) doWeHaveInternetConnection{
BOOL success;
// google should always be up right?!
const char *host_name = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Google is reachable: %d", flags);
}else{
NSLog(@"Google is unreachable");
}
return isAvailable;
}
Disculpas, soy un poco novato. Agregué el ejemplo de clases de Accesibilidad a mi proyecto, pero no puedo compilar. \t Accesibilidad * hostReach = [[Reachability reachabilityWithHostName: @ "www.apple.com"] retain]; No funciona. No se puede encontrar el método reachabilityWithHostName. Voy a seguir afinando ... – stoutyhk
esto funciona: + (BOOL) doWeHaveInternetConnection2 { \t \t si ([[Accesibilidad sharedReachability] internetConnectionStatus] == NotReachable) { \t \t retorno NO; \t} \t demás \t { \t \t retorno SÍ; \t} \t } – stoutyhk
ese código siempre le da "NotConnected" aunque está conectado. pero una vez que va al método "alcanzadaChanged" le da el estado correcto.Entonces, ¿cómo obtener el estado correcto en primer lugar? – Nnp