网络状态的监听

网络状态改变的监听方法

  • 通过苹果苹果提供的Reachability类来实现监听
    注意 :
  1. 这个类通常情况下,要想实现持续监听网络状态的改变,需要和通知一起使用
  2. 只有网络状态发生变化的时候才会被调用,所以没有办法获取初始的网络状态
//使用苹果提供的Reachability来检测网络状态,如果要持续监听网络状态的概念,需要结合通知一起使用。
//提供下载地址:
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    //1.注册一个通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
    //2.拿到一个对象,然后调用开始监听方法
    Reachability *r = [Reachability reachabilityForInternetConnection];
    [r startNotifier];
    //持有该对象,不要让该对象释放掉
    self.r = r;
}
//当控制器释放的时候,移除通知的监听
-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)networkChange
{
    //获取当前网络的状态
   if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN)
    {
        NSLog(@"当前网络状态为3G");
        return;
    }
    if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi)
    {
        NSLog(@"当前网络状态为wifi");
        return;
    }
    NSLog(@"当前没有网络");
}
  • 通过使用AFN框架来监听网络状态的改变
    注意 : **
    通过AFN框架的AFNetworkReachabilityManager类实现监听网络状态的改变,可以在
    程序刚启动的时候就获取网络的状态,并且可以实时监听网络状态的改变**.
-(void)AFNReachability
{
    //1.创建网络监听管理者
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

    //2.监听网络状态的改变
    /*
     AFNetworkReachabilityStatusUnknown          = 未知
     AFNetworkReachabilityStatusNotReachable     = 没有网络
     AFNetworkReachabilityStatusReachableViaWWAN = 3G
     AFNetworkReachabilityStatusReachableViaWiFi = WIFI
     */
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"未知");
                break;
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"没有网络");
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"3G");
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI");
                break;

            default:
                break;
        }
    }];

    //3.开始监听
    [manager startMonitoring];
}

你可能感兴趣的:(网络状态的监听)