¿Tengo conexión a Internet?

23 November 2008



En muchas ocasiones, será conveniente comprobar, antes de realizar cualquier otra acción, que tipo de conexión a Internet tengo disponible, WIFI, 3G, celular, etc...

En las pruebas que previamente he realizado, he comprobado que ante la situación de no tener conexión WIFI ó 3G, el dispositivo utiliza la conexión celular del movil (la utilizada para hacer y recibir llamadas), para conectarse a Internet, eso si, a una velocidad mucho más inferior que las otras.

Por lo tanto, el siguiente fragmento de código, gracias al framework SystemConfiguration.framework, nos permite conocer si tenemos conexión:

[cpp]
SCNetworkReachabilityFlags flags;

SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, @"http://www.iphonesoftware.es");

BOOL gotFlags = SCNetworkReachabilityGetFlags(reachability, &flags);

CFRelease(reachability);

if (!gotFlags) {

bConnectionIsReachable = NO;

}

else

{

BOOL isReachable = flags & kSCNetworkReachabilityFlagsReachable;

BOOL noConnectionRequired = !(flags & kSCNetworkReachabilityFlagsConnectionRequired);

if ((flags & kSCNetworkReachabilityFlagsIsWWAN)) {

noConnectionRequired = YES;

}

bConnectionIsReachable = (isReachable && noConnectionRequired) ? YES : NO;

}
[/cpp]
 

Para empezar, crearemos una conexión mediante SCNetworkReachabilityCreateWithName, la cual será examinada para establecer si tenemos conexión o no. Después, comprobaremos el estado mediante una serie de flags, utilizando la función SCNetworkReachabilityGetFlags. Dichos flags serán evaluados comparando su valor con alguno de los del siguiente enumerado:

[cpp]
enum {

kSCNetworkReachabilityFlagsTransientConnection = 1<<0,

kSCNetworkReachabilityFlagsReachable = 1<<1,

kSCNetworkReachabilityFlagsConnectionRequired = 1<<2,

kSCNetworkReachabilityFlagsConnectionAutomatic = 1<<3,

kSCNetworkReachabilityFlagsInterventionRequired = 1<<4,

kSCNetworkReachabilityFlagsIsLocalAddress = 1<<16,

kSCNetworkReachabilityFlagsIsDirect = 1<<17,

kSCNetworkReachabilityFlagsIsWWAN = 1<<18,

};
[/cpp]
 

Desactiva la conexión WIFI, 3G, ó incluso el operador de tu iPhone para realizar las pruebas.

 
¿Tengo conexión a Internet?

Deja un comentario

Escrito por:

Administrador

Sin categoría
3GConexiónWIFI

Utilizamos cookies propias y de terceros para mantener la sesión o sus preferencias, recopilar estadísticas y proporcionar contenidos conforme a sus intereses. Si continua navegando, utiliza los servicios de la web o pulsa el botón, está aceptando su instalación y el uso que hacemos de ellas. Puede obtener más información sobre como revocar su consentimiento o cómo cambiar la configuración en este enlace.