AFNetworking y sin escenario de connection a Internet

Utilizo AFNetworking en mi aplicación para cada request (como iniciar session, get datos de url, etc.).

Tomemos esto por ejemplo: un usuario hace clic en el button de inicio de session y no hay connection, ¿cómo mostrar instantáneamente un UIAlertView que dice el error? ¿La única forma es esperar el time de espera de la request y ejecutar el bloque de failure ? ¿No hay una forma de comprobar instantáneamente si hay connection o no?

¡Gracias!

A partir de 0.9, AFHTTPClient tiene una AFHTTPClient networking integrada (una interfaz más simple para el mencionado código de accesibilidad de Apple). Simplemente incluya el framework de SystemConfiguration y use -setReachabilityStatusChangeBlock: para especificar una respuesta cuando cambie el estado de accesibilidad.

Con AFNetworking estos son los pasos que hay que seguir para aprovechar setReachabilityStatusChangeBlock: después de agregar las classs de AFNetworing,

  1. Agregue SystemConfiguration.framework a su proyecto
  2. En el file pch, agregue #import <SystemConfiguration/SystemConfiguration.h>
  3. Suponiendo que tiene una subclass de AFHTTPClient en esta subclass, agregue a continuación líneas de código en la function init:
 [self setReachabilityStatusChangeBlock: ^ (estado de AFNetworkReachabilityStatus) {
         NSLog (@ "cambiado% d", estado);
         // tu código aquí
     }];

Tal vez pueda usar "Reachability" para determinar si el dispositivo está conectado a la networking. Aquí está el enlace al Apple Doc. : Alcanzabilidad

Por ejemplo :

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) { //Your UIAlertView } 

Utilizo AFNetworkingOperationDidFinishNotification . Cada vez que falle una request http, la alerta aparece e informa al usuario

 - (void)addNetworkObserver { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(HTTPOperationDidFinish:) name:AFNetworkingOperationDidFinishNotification object:nil]; } - (void)HTTPOperationDidFinish:(NSNotification *)notification { AFHTTPRequestOperation *operation = (AFHTTPRequestOperation *)[notification object]; if (![operation isKindOfClass:[AFHTTPRequestOperation class]]) { return; } if (operation.error) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Connection error" message:@"Missing connection to the internet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } } 

¿Qué te parece usar Reachability?

Puede verificar si tiene una razón plausible para probar una connection antes de hacerlo.

Parece que el Apple Sample Project for Reachability muestra cómo get un estado inicial.