今天iOS项目要做一个优化,把上报失败的数据保存起来,等有网络的时候就上传服务器,所以这里就要用到实时检测网络的功能了。刚开始我的思路是自己注册一个全局的通知来实现,但是又想了解下别人的思路,于是上网搜了下就搜到了Reachability和AFN都可以实现的。但是我个人觉得AFN比较好用,当程序在后台运行时,也可以检测网络状态的改变,省去了不少的麻烦。 废话少说,进入主题吧~ 一、AFNetworing检测网络AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { // 当网络状态改变时调用 switch (status) { case AFNetworkReachabilityStatusUnknown: NSLog(@"未知网络"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"没有网络"); break; case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"手机自带网络"); break; case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"WIFI"); break; } }]; //开始监控 [manager startMonitoring] 二、Reachability1.注册通知[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil]; // 创建Reachability Reachability *reachability = [Reachability reachabilityForInternetConnection]; // 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification) [reachability startNotifier]; 2.监听方法- (void)networkStateChange { // 1.检测网络状态 Reachability *wifi = [Reachability reachabilityForLocalWiFi]; // 2.检测手机是否能上网络 Reachability *connect = [Reachability reachabilityForInternetConnection]; // 3.判断网络状态 if ([wifi currentReachabilityStatus] != NotReachable) { NSLog(@"有wifi"); } else if ([connect currentReachabilityStatus] != NotReachable) { NSLog(@"使用手机自带网络进行上网"); } else { NSLog(@"没有网络"); } } 以上为两种检测网络状态的方法,我个人觉得AFN比较好用,希望对大家有所帮助。 (责任编辑:好模板) |