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

iOS使用AFNetWorking第三库检测网络连接状态

2016-08-15 13:47 489 查看
今天到公司,由自己的项目还没有空白状态的显示,想到要做一个手机所连接网络的判定,并达到实时监测的目的。了解到如果用iOS自带的Reachability类来实现的话不太方便,因为要保证它处于实时监听的状态,而且在得到当前的网络状态之后就要发送全局通知,出于这样的考虑,决定使用AFNetWorking框架中的AFNetworkActivityIndicatorManager单例类来进行网络状态的实时监听。

以下是具体实现方法:

首先,要引入 AFNetWorking.h 文件,在 AppDelegate 的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions 方法中调用以下函数:

-(void)isNetWorking{

//开启网络指示器,开始监听
[[AFNetworkReachabilityManager sharedManager] startMonitoring];

// 检测网络连接的单例,网络变化时的回调方法
[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

}];
}


再就是在需要监测网络状态控制器中,在- (void)viewDidLoad方法中注册通知的观察者:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notifi:) name:AFNetworkingReachabilityDidChangeNotification object:nil]
</pre><pre name="code" class="objc" style="font-size:14px;">最后,实现notifi:的方法:
- (void)notifi:(NSNotification *)noti{

NSDictionary *dic = noti.userInfo;
//获取网络状态
NSInteger status = [[dic objectForKey:@"AFNetworkingReachabilityNotificationStatusItem"] integerValue];

switch (status) {
case AFNetworkReachabilityStatusNotReachable:{

NSLog(@"无网络连接");
}
break;
case AFNetworkReachabilityStatusReachableViaWWAN:{

NSLog(@"移动蜂窝网络");
}
break;
case AFNetworkReachabilityStatusReachableViaWiFi:{

NSLog(@"wifi网络");
}
break;
case AFNetworkReachabilityStatusUnknown:{

NSLog(@"无法获取网络状态");
}
break;
default:
break;
}
}
</pre><pre name="code" class="objc">还有需要注意一点,不要忘记注销观察者,代码如下:
-(void)dealloc{

[[NSNotificationCenter defaultCenter] removeObserver:self];
}
</pre><span style="font-size:18px">这样就可以实现实时监控网络连接状态的目的了.</span><span style="font-size:14px"></span><pre>


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