Configurar la accesibilidad con AFNetworking 2.0

Estoy intentando configurar Alcance con la nueva 2.0 AFNetworking .

En mi AppDelegate inicializo el gestor compartido.

// Instantiate Shanetworking Manager [AFNetworkReachabilityManager shanetworkingManager]; 

Luego, en el método de VC relevante, verifico si es Reachable:

 // Double check with logging if ([[AFNetworkReachabilityManager shanetworkingManager] isReachable]) { NSLog(@"IS REACHABILE"); } else { NSLog(@"NOT REACHABLE"); } 

En la actualidad, esto no funciona como se esperaba en el simulador, pero imagino que esto debería probarse en el dispositivo y no en el simulador.

Pregunta Lo que me gustaría hacer es controlar la conectividad dentro del VC. Por lo tanto, ejecuto lo siguiente en viewDidLoad:

 // Start monitoring the internet connection [[AFNetworkReachabilityManager shanetworkingManager] startMonitoring]; 

¿Cómo me registraré para los cambios? ¿Qué es / se llamaría una vez que cambia la connection de networking? No puedo ver esto en la documentation.

Como puedes leer en la página AFNetworking léeme

 [[AFNetworkReachabilityManager shanetworkingManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); }]; 

Aquí también hay un enlace a la documentation oficial .

Estás haciendo esto más difícil de lo que necesita ser. Prueba esto:

 - (void)viewDidLoad { [super viewDidLoad]; [[AFNetworkReachabilityManager shanetworkingManager] startMonitoring]; } - (BOOL)connected { return [AFNetworkReachabilityManager shanetworkingManager].reachable; } 

Si también desea recibir una notificación cuando el estado cambia, ejecute setReachabilityStatusChangeBlock

Tengo una class única AFHTTPRequestOperationManager. En el singleton tiene un método:

 +(void)connectedCompletionBlock:(void(^)(BOOL connected))block { [[AFNetworkReachabilityManager shanetworkingManager] startMonitoring]; [[AFNetworkReachabilityManager shanetworkingManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { BOOL con = NO; NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) { con = YES; } if (block) { [[AFNetworkReachabilityManager shanetworkingManager] stopMonitoring]; block(con); } }]; 

}

Antes de realizar una request, invoca este método que devuelve un bloque que indica si se puede acceder a Internet:

 [TLPRequestManager connectedCompletionBlock:^(BOOL connected) { if (connected) { // Make a request }else{ UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Notice" message:@"Internet is not available." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil]; [alertView show]; } }]; 

Solo estaba pasando por tu pregunta y todas las respuestas. Después de eso, decidí hacer todas estas cosas una vez. Entonces, en mi proyecto actual, acabo de include el AFNetworking a través de los cocoa-pods y esta es la solución que me llena por completo.

Solución: En primer lugar, AFNetworkReachabilityManager es una class singleton. No necesita hacer la initialization de AppDelegate para shanetworkingManager.

 //[AFNetworkReachabilityManager shanetworkingManager]; #import <AFNetworkReachabilityManager.h> - (void)viewDidLoad { //Starting the network monitoring process [[AFNetworkReachabilityManager shanetworkingManager]startMonitoring]; //Checking the Internet connection... [[AFNetworkReachabilityManager shanetworkingManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status){ if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) { UIAlertView *alertNetFound = [[UIAlertView alloc]initWithTitle:@"Network Found" message:@"Please Wait Until It is loading" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alertNetFound show]; }else{ UIAlertView *alertNetNotFound = [[UIAlertView alloc]initWithTitle:@"No Internet" message:@"Please Check Your Internet Connection Honey" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alertNetNotFound show]; } }]; 

Por lo tanto, en este caso, cada vez que el dispositivo se conecta a una networking, primero hará el process de inicio de monitoreo y, después de eso, se conectará al bloque de estado cada vez y mostrará una alerta de acuerdo con el estado.

Puede hacer cualquier cosa de acuerdo con su elección al replace las alertas en el bloque de estado. Utilicé esto para cargar una página web automáticamente desde el almacenamiento local pero quité ese código para simplificarlo.

Incluso funciona con mi simulador y Mac mini ..

Gracias

Espero que esto haya ayudado.

Lo uso en el delegado de la aplicación ->

  func reachablityCode() { AFNetworkReachabilityManager.shanetworkingManager() AFNetworkReachabilityManager.shanetworkingManager().startMonitoring() AFNetworkReachabilityManager.shanetworkingManager().setReachabilityStatusChangeBlock({(status) in let defaults = NSUserDefaults.standardUserDefaults() if status == .NotReachable { defaults.setBool(false, forKey:REACHABLE_KEY) } else { defaults.setBool(false, forKey: REACHABLE_KEY) } defaults.synchronize() }) } 

Y luego esto en el file base ->

  func isReachable() -> Bool { return NSUserDefaults.standardUserDefaults().boolForKey(REACHABLE_KEY) }