您的位置:首页 > 理论基础 > 计算机网络

使用AFNetworking框架检测网络状态

2016-06-01 14:09 381 查看
AFNetworking
框架中自带了网络检测功能,在AFNetworkReachabilityManager文件中,使用AFNetworkReachabilityManager来监听网络状态的改变;苹果也提供Reachability来监听网络。因现在使用AFNetworking框架进行网络请求较多,因此博主使用自带的网络检测。[/code]

以下是枚举类的几种状态

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(@"未知网络");
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: