IOS--利用AFNetworking监听网络状态

时间:2021-05-31 15:19:57

网络环境检测

  • 网络环境检测:检测用户当前所处的网络状态

效果图

- 1.当蜂窝和wifi同时关闭时候

IOS--利用AFNetworking监听网络状态

- 显示为不可达(AFNetworkReachabilityStatusNotReachable)状态
- ![这里写图片描述](http://img.blog.csdn.net/20150814131838186)
- 2.打开蜂窝移动数据,关闭wifi

IOS--利用AFNetworking监听网络状态
- 显示为wan网络
IOS--利用AFNetworking监听网络状态
- 3.打开wifi,关闭蜂窝移动数据
IOS--利用AFNetworking监听网络状态
- 显示为wifi网络(AFNetworkReachabilityStatusReachableViaWiFi)
IOS--利用AFNetworking监听网络状态
- 4.同时打开wifi和蜂窝移动数据时候
IOS--利用AFNetworking监听网络状态
- 显示为wifi网络,从这点来看,显然是不坑的呀
IOS--利用AFNetworking监听网络状态

步骤

  • 1.创建网络监听者管理者对象
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
  • 2.设置监听
    • 网络状态
    //显然是枚举值
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,//未识别的网络
AFNetworkReachabilityStatusNotReachable = 0,//不可达的网络
AFNetworkReachabilityStatusReachableViaWWAN = 1,//2G,3G,4G...
AFNetworkReachabilityStatusReachableViaWiFi = 2,//wifi网络

-设置网络监听

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未识别的网络");
break;

case AFNetworkReachabilityStatusNotReachable:
NSLog(@"不可达的网络(未连接)");
break;

case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"2G,3G,4G...的网络");
break;

case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi的网络");
break;
default:
break;
}
}];
  • 3.开始监听
[manager startMonitoring];

代码

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//创建网络监听管理者对象
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

/*
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
AFNetworkReachabilityStatusUnknown = -1,//未识别的网络
AFNetworkReachabilityStatusNotReachable = 0,//不可达的网络(未连接)
AFNetworkReachabilityStatusReachableViaWWAN = 1,//2G,3G,4G...
AFNetworkReachabilityStatusReachableViaWiFi = 2,//wifi网络
};
*/

//设置监听
[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
switch (status) {
case AFNetworkReachabilityStatusUnknown:
NSLog(@"未识别的网络");
break;

case AFNetworkReachabilityStatusNotReachable:
NSLog(@"不可达的网络(未连接)");
break;

case AFNetworkReachabilityStatusReachableViaWWAN:
NSLog(@"2G,3G,4G...的网络");
break;

case AFNetworkReachabilityStatusReachableViaWiFi:
NSLog(@"wifi的网络");
break;
default:
break;
}
}];
//开始监听
[manager startMonitoring];
}