利用AFN,实时检测网络状态,在此,封装了一个类,这里的返回值可以根据自己的癖好随意设置,开始撸代码:
@interface ZJJAFCheckNetManager : AFHTTPSessionManager
+ (void)checkNetWithBlock:(void(^)(NSString *))blockName;
#pragma mark - 靓丽的风景线----------------------
#import "ZJJAFCheckNetManager.h"
@implementation ZJJAFCheckNetManager
static ZJJAFCheckNetManager *_sharedClient = nil;
+ (void)checkNetWithBlock:(void(^)(NSString *))blockName {
//用dispatch_once 函数 解决线程问题 防止多线程时被不同线程同时调用 类似加锁的功能
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedClient = [[ZJJAFCheckNetManager alloc]initWithBaseURL:[NSURL URLWithString:@"https://www.baidu.com"]];
_sharedClient.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
//网络判断的内部实现
[_sharedClient.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch(status) {
case AFNetworkReachabilityStatusReachableViaWWAN:
// NSLog(@"-------AFNetworkReachabilityStatusReachableViaWWAN------");
if (blockName) {
blockName(@"data");
}
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
// NSLog(@"-------AFNetworkReachabilityStatusReachableViaWiFi------");
if (blockName) {
blockName(@"wifi");
}
break;
case AFNetworkReachabilityStatusNotReachable:
// NSLog(@"-------AFNetworkReachabilityStatusNotReachable------");
if (blockName) {
blockName(@"off");
}
break;
default:
break;
}
}];
[_sharedClient.reachabilityManager startMonitoring];
});
}
#pragma mark - 靓丽的风景线----------------------
[ZJJAFCheckNetManager checkNetWithBlock:^(NSString *str) {
NSLog(@"网络状态为:%@",str);
}];