AFNetworking realiza tareas en segundo plano solo cuando wifi está disponible

Me gustaría utilizar el AFHTTPSessionManager de AFHTTPSessionManager para implementar una acción de carga de datos en un server web (p. Ej. Acción de publicación) solo cuando Wi-Fi está disponible y la acción debe ponerse en queue incluso si hay una networking de celular disponible. Creo que necesito hacer uso de AFNetworkReachabilityManager . Pero en el github de AFNetworking, solo muestra cómo trabajar con AFHTTPRequestOperationManager y manager.operationQueue .

Por lo tanto, quiero preguntar si puedo hacer algo similar usando AFHTTPSessionManager y its operationQueue

el siguiente es mi pensamiento con algún fragment de código, ¿tiene sentido hacerlo?

AppDelegate.m

 @interface AppDelegate () @property (strong, nonatomic) NSURLSession *session; @property (strong, nonatomic) NSMutableURLRequest *request; @property (strong, nonatomic) AFHTTPSessionManager *manager; @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [self config_sessionManager]; [self config_request]; return YES; } - (void)config_sessionManager { NSURL *baseURL = [NSURL URLWithString:TargetURL]; NSURLSessionConfiguration *config = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:kSCIdenitifer]; self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL sessionConfiguration:config]; //actually, what is this operationQueue? I don't quit understand it //sometimes, I see `mainQueue` was used, //eg `[[NSOperationQueue mainQueue] addOperation:op]` in GET example in the Github NSOperationQueue *operationQueue = self.manager.operationQueue; [self.manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { switch (status) { case AFNetworkReachabilityStatusReachableViaWiFi: [operationQueue setSuspended:NO]; break; default: [operationQueue setSuspended:YES]; break; } }]; [self.manager.reachabilityManager startMonitoring]; } - (void)config_request { self.request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kTargetURL]]; self.request.HTTPMethod = @"POST"; self.request.HTTPBody = [self.m_str dataUsingEncoding:NSUTF8StringEncoding]; } - (void)run_task { NSURLSessionUploadTask * task = [self.manager uploadTaskWithStreamedRequest:self.request progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (!error) { //ok, no error NSLog(@"upload data successfully!!!!"); } else { //there is error NSLog(@"error with uploading data!!!!"); } }]; [task resume]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [self run_task]; completionHandler(UIBackgroundFetchResultNewData); } @end 

Entonces, si estoy haciendo lo mismo que arriba, ¿pondría en queue la tarea config_task en el administrador de session si Wifi no está disponible? Y si más tarde Wi-Fi está disponible de nuevo, ¿se reanudará la tarea y los datos como deseo?