检测网络状态

在网络应用中,需要对用户设备的网络状态进行实时监控,目的是

让用户了解自己的网络状态,防止一些误会(比如怪应用不好)

根据用户的网络状态进行智能处理,节省用户流量,提高用户体验

WiFi3G网络:自动下载高清图片

低速网络:只下载缩略图

没有网络:只显示离线的缓存数据

1.使用AFNetworking框架

- (void)afnMonitoring {
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    
    
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"------当前网络状态%zd",status);
    }];
    
    [manager startMonitoring];
}
typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
    AFNetworkReachabilityStatusUnknown          = -1,//未知网络
    AFNetworkReachabilityStatusNotReachable     = 0,//没有网络
    AFNetworkReachabilityStatusReachableViaWWAN = 1,//蜂窝网络
    AFNetworkReachabilityStatusReachableViaWiFi = 2,//WiFi网络
}

2.使用苹果官方的Reachability

下载地址:

 
- (void)getNetworkStatus {
    if([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
        NSLog(@"是WiFi网络");
    }else if([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
        NSLog(@"是蜂窝网络");
    }else {
        NSLog(@"网络故障");
    }
}

长期监控网络的状态

- (void)applyMonitoring {
    //监听通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
    
    //开始监控网络
    self.reachability = [Reachability reachabilityForInternetConnection];
    [self.reachability startNotifier];
}

取消任务

- (void)dealloc
{
    [self.netReachability stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
}
 
 
 
 
原文地址:https://www.cnblogs.com/langji/p/5380056.html