2017-05-17 7 views
0

인터넷을 사용할 때 요청을 보내고 대기열에 넣을 때까지이를 수행하는 방법입니다. 내 세션 관리자 코드는인터넷이 비활성 상태에서 활성 상태 일 때 요청 보내기 Afnetworking 3.0

- (void)communicateUsingPOSTMethod:(NSString*)pBaseURL parameterDictionary:(id)pParameterDictionary 
         success:(void(^)(id successResponse))pSuccessCallback failure:(void(^)(NSError* error))pFailiureCallback { 

NSMutableURLRequest *req = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:pBaseURL parameters:pParameterDictionary error:nil]; 
[req setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"]; 
[req setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
[req addValue:@"text/plain" forHTTPHeaderField:@"Accept"]; 

if ([GSCommonUtil isUserLoggedIn]) { 
    [req setValue:authenticationHeader forHTTPHeaderField:@"Authorization"]; 
    [req setValue:[GSCommonUtil currentTimeZoneId] forHTTPHeaderField:@"Accept-Timezone"]; 
} 

NSError *error; 
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:pParameterDictionary options:0 error:&error]; 
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 
[req setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]]; 

[[_sessionManager dataTaskWithRequest:req completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
    if (!error) { 
     pSuccessCallback(responseObject); 
    } else { 
     pFailiureCallback(error); 
    } 
}] resume]; 
} 

,이 같은 것입니다 그리고 인터넷 연결을 확인하기 위해 도달 클래스를 사용하여 사용하고 있습니다. 이 같이 보입니다 ,

+ (BOOL)isNetworkConnected { 
    Reachability *internet = [Reachability  reachabilityWithHostName:@"www.google.com"]; 
    NetworkStatus netStatus = [internet currentReachabilityStatus]; 
    bool netConnection = false; 

switch (netStatus) { 
    case NotReachable: { 
     netConnection = false; 
     break; 
    } 
    case ReachableViaWWAN: { 
     netConnection = true; 
     break; 
    } 
    case ReachableViaWiFi: { 
     netConnection = true; 
     break; 
    } 
} 
    return netConnection; 
} 

많은 제안 AFNetworkReachabilityManager를 사용하여이 말했다되는 있었다. 그것이 나의 목표를 성취하는 데 어떻게 도움이 될까요?

이 작업을 수행하기위한 적절한 단계는 무엇입니까?

답변

0

네트워크에 대한 관찰자가 필요하다고 생각합니다. (죄송합니다. 단지 예제 코드 만 가지고 있습니다)

let reach = Reachability.reachabilityForInternetConnection() 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(networkChanged), name: kReachabilityChangedNotification, object: reach) 
    reach.startNotifier() 
    let connected = internetReachability.currentReachabilityStatus().value == 0 ? false : true 
    // do stuffs if connected 
    return true 
} 

func networkChanged() { 
    let connected = reach.currentReachabilityStatus().value == 0 ? false : true 
    // do stuffs if connected 
}