tiene telefono sim señal servicio reconoce queda porque permitido moviles los funciona datos buscando agarra iphone ios cocoa-touch afnetworking

telefono - porque mi iphone no agarra los datos moviles



Escenario de red y sin conexión a internet (5)

Utilizo AFNetworking en mi aplicación para cada solicitud (como iniciar sesión, obtener datos de url, etc.).

Tome esto por ejemplo: un usuario hace clic en el botón de inicio de sesión y no hay conexión. ¿Cómo mostrar instantáneamente un UIAlertView que dice el error? ¿La única forma es esperar el tiempo de espera de la solicitud y ejecutar el bloque de failure ? ¿No hay una manera de verificar instantáneamente si hay conexión o no?

¡Gracias!


¿Qué hay de usar Reachability?

Puede verificar si tiene una razón plausible para intentar una conexión antes de hacerlo.

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


A partir del 0.9, AFHTTPClient realidad tiene incorporada la capacidad de alcance de la red (una interfaz más simple para el código de alcance de Apple mencionado anteriormente). Solo incluya el marco 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 poder aprovechar setReachabilityStatusChangeBlock: después de agregar las clases AFNetworing:

  1. Agregue SystemConfiguration.framework a su proyecto
  2. En el archivo pch agregue #import <SystemConfiguration/SystemConfiguration.h>
  3. Suponiendo que tiene una subclase de AFHTTPClient en esta subclase agregue las siguientes líneas de código en la función init:

[self setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSLog(@"changed %d", status); //your code here }];


Tal vez podría usar "Alcance" para determinar si el dispositivo está conectado a la red. Aquí está el enlace al Apple Doc. : Reachability

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 }


Yo uso la AFNetworkingOperationDidFinishNotification . Cada vez que falla una solicitud 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]; } }