2015-01-21 2 views
0

Я использую AfNetworking 1.0 в своем приложении. Я создал одноэлементный класс AFHTTPClient. следующий мой код;Сложность в использовании AFNetworking (AFClient) для проверки сети доступна или нет

+ (id)sharedInstance { 

static WebServices *__sharedInstance; 
static dispatch_once_t onceToken; 
dispatch_once(&onceToken, ^{ 
NSString *WebServiceBaseURLString = [[NSUserDefaults standardUserDefaults]stringForKey:@"URL"]; 

__sharedInstance = [[WebServices alloc] initWithBaseURL:[NSURL URLWithString:WebServiceBaseURLString]]; 



}); 


return __sharedInstance; 
} 



- (id)initWithBaseURL:(NSURL *)url { 


self = [super initWithBaseURL:url]; 


if (self) { 

NSString *accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"UserToken"]; 
NSLog(@"accessToken=%@",accessToken); 

[self setAuthorizationHeaderWithToken:accessToken]; 

NSLog(@"self=%@",self); 

[self registerHTTPOperationClass:[AFJSONRequestOperation class]]; 

self.parameterEncoding = AFJSONParameterEncoding; 
[AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"application/json"]]; 



} 


return self; 
} 

его рабочий файл.

Но теперь я хочу использовать блок AFNetworkReachabilityStatus

проверить сеть.

[self setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status){ 
NSLog(@"changed %d", status); 

}]; 

Может ли кто-нибудь посоветовать мне, как использовать блок AFNetworkReachabilityStatus?

+0

Я использую AFNetworking 2,0. Попробуйте в классе A в viewDidLoad напишите это: [[AFNetworkReachabilityManager sharedManager] startMonitoring]; Затем, прежде чем вы вызовете свой класс, выполните следующие действия: [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(статус AFNetworkReachabilityStatus) { NSLog (@ "Доступность:% @", AFStringFromNetworkReachabilityStatus (статус)); }]; и status it enum –

+0

Но я использую версию AFNetworking 1.0 – Monti

ответ

0
  • (пустоты) startMonitoringWithStatusChangeBlock: (недействительный (^) (AFNetworkReachabilityStatus статус)) блокировать {

    [самостоятельный stopMonitoring];

    если (! Self.networkReachability) { возвращение; }

    __weak __typeof (self) weakSelf = self; AFNetworkReachabilityStatusBlock callback =^(статус AFNetworkReachabilityStatus) { __strong __typeof (weakSelf) strongSelf = weakSelf;

    strongSelf.networkReachabilityStatus = status; 
    if (block) { 
        block(status); 
    } 
    

    };

    SCNetworkReachabilityContext context = {0, (__bridge void *) callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL};

    SCNetworkReachabilitySetCallback (self.networkReachability, AFNetworkReachabilityCallback, &);

    SCNetworkReachabilityFlags flags;

    SCNetworkReachabilityGetFlags (self.networkReachability, & flags);

    dispatch_async (dispatch_get_main_queue(),^{ AFNetworkReachabilityStatus статус = AFNetworkReachabilityStatusForFlags (флаги); обратного вызова (статус); });

    SCNetworkReachabilityScheduleWithRunLoop (self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);

}