AFNetworking
框架中自带了网络检测功能,在AFNetworkReachabilityManager文件中,使用AFNetworkReachabilityManager来监听网络状态的改变;苹果也提供Reachability来监听网络。因现在使用AFNetworking框架进行网络请求较多,因此博主使用自带的网络检测。
以下是枚举类的几种状态
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,
AFNetworkReachabilityStatusNotReachable = 0,
AFNetworkReachabilityStatusReachableViaWWAN = 1,
AFNetworkReachabilityStatusReachableViaWiFi = 2,
};
-(void)afnNetworkReachability
{
//1.创建网络状态监测通知
AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];
//2.监测网络状态改变
[manger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未知网络");
break;
case AFNetworkReachabilityStatusNotReachable:
NSLog(@"没有连接网络");
break;
case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"3G|4G");
break;
case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"WiFi");
break;
default:
break;
}
}];
Reachablity 是一个iOS下检测,iOS设备网络环境用的库。
因为Reachablity只能监听网络状态的状况,不能监听它的改变,所以采用通知的方式
-(void)viewDidLoad
{
[super viewDidLoad];
//注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityStatusChange) name:kReachabilityChangedNotification object:nil];
//创建对象
Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
}
-(void)reachabilityStatusChange
{
if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN) {
NSLog(@"3G|4G");
return;
}
if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi) {
NSLog(@"wifi");
return;
}
NSLog(@"未知网络");
}