iOS之AFNetworking实时网络状态监控

时间:2021-05-31 15:20:09

在实际开发时,对于网络的处理是必不可少的!然后为了减少对第三方类库的引用,我们一般会在将方法向上抽象一层出来。

接下来 我们将对AFN进行抽象封装

一、对网络状态的实时监控

typedef void(^actionBlokc)();

+ (void)checkNewWorking:(NSString *)url WithSucessBlock:(actionBlokc)success andWithFaildBlokc:(actionBlokc)faild
{

NSURL *baseURL = [NSURL URLWithString:url];;//创建一个URL

AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL];//创建一个Http请求操作管理者

NSOperationQueue *operationQueue = manager.operationQueue;//将操作管理者加入到队列当中
[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {//利用block代码实现对网络的检测
switch (status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
case AFNetworkReachabilityStatusReachableViaWiFi:
[operationQueue setSuspended:NO];//设置队列暂停为NO
NSLog(@"网络状态正常");
success();
break;
case AFNetworkReachabilityStatusNotReachable:
default:
[operationQueue setSuspended:YES];//设置队列暂停为YES
NSLog(@"网络状态异常");
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
faild();
});
break;
}
}];
[manager.reachabilityManager startMonitoring];//开启网络监控
}