设备处于脱机状态时AFNetworking 2.0队列请求使用setReachabilityStatusChangeBlock执行任何操作

我一直在试图想出一个解决scheme,当设备处于脱机状态时,使用AFNetworking对HTTP请求进行排队,所以当它恢复在线时,请求就完成了。 据我已经能够理解,这是可能的设置setReachabilityStatusChangeBlock:参数。

到目前为止,这是我的:

 // ViewController.h @interface XYZTicketViewController : UIViewController<NSURLConnectionDelegate> // This is from before I started using AFNetworking, I'm intending to change all the requests to use AFNetworking in the near future. @end // ViewController.m (...) #import <AFHTTPRequestOperationManager.h> #import <AFNetworkReachabilityManager.h> (...) @interface XYZTicketViewController () - (void)viewDidLoad (...) { NSURL *baseURL = [NSURL URLWithString:@"http://54.213.167.202"]; AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; NSOperationQueue *operationQueue = manager.operationQueue; [manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: case AFNetworkReachabilityStatusReachableViaWiFi: [operationQueue setSuspended:NO]; NSLog(@"WIFI"); break; case AFNetworkReachabilityStatusNotReachable: default: [operationQueue setSuspended:YES]; NSLog(@"oflline, baby"); break; } }]; NSDictionary *parameters = @{@"action": @"login", @"user": @"mail.address@gmail.com", @"pass": @"howdoyouturnthison"}; [manager GET:@"http://54.213.167.202/api.php" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"JSON: %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }]; (...) } 

我找不到任何例子,但我在这里读到,这是可能的,但到目前为止,任何事情发生时,在线状态的变化。

希望你能帮助我

在调用setReachabilityStatusChangeBlock之前,您需要调用startMonitoring

[manager.reachabilityManager startMonitoring];

如果您使用AFNetworking 2.0,我build议如下:

 [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { DLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); switch (status) { case AFNetworkReachabilityStatusReachableViaWWAN: case AFNetworkReachabilityStatusReachableViaWiFi: [operationQueue setSuspended:NO]; NSLog(@"WIFI"); break; case AFNetworkReachabilityStatusNotReachable: default: [operationQueue setSuspended:YES]; NSLog(@"offline, baby"); break; } }]; 

你不是店manager 。 所以就像任何局部variables在离开viewDidLoad时被删除一样。 将其存储到属性或实例variables。