iOS判断网络

1.AFNNetworking

//AFN判断网络

-(void)getInternetStatue{

// 1.获得网络监控的管理者

AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];


// 2.设置网络状态改变后的处理

[mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

    // 当网络状态改变了, 就会调用这个block

    switch (status) {

        case AFNetworkReachabilityStatusUnknown: // 未知网络

            NSLog(@"未知网络");

            break;

            

        case AFNetworkReachabilityStatusNotReachable: // 没有网络(断网)

            NSLog(@"没有网络(断网)");

            break;

            

        case AFNetworkReachabilityStatusReachableViaWWAN: // 手机自带网络

            NSLog(@"手机自带网络");

            break;

            

        case AFNetworkReachabilityStatusReachableViaWiFi: // WIFI

            NSLog(@"WIFI");

            break;

    }

    if(status ==AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi)

    {

//        NSLog(@"有网");

    }else

    {

        NSLog(@"没有网");

        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"网络失去连接" message:nil delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];

        alert.delegate = self;

        [alert show];

    }


}];

    

    // 3.开始监控

    [mgr startMonitoring];


}


===================

2.Reachability

需要把该工程中的Reachability.h 和 Reachability.m 拷贝到你的工程中,同时需要把 SystemConfiguration.framework 添加到工程中,

// 监听网络状态改变的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

// 创建Reachability
self.conn = [Reachability reachabilityForInternetConnection];
// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[self.conn startNotifier];

// 处理网络状态改变
- (void)networkStateChange
{
    // 1.检测wifi状态
    Reachability *wifi = [Reachability reachabilityForLocalWiFi];
    
    // 2.检测手机是否能上网络(WIFI\3G\2.5G)
    Reachability *conn = [Reachability reachabilityForInternetConnection];
    
    // 3.判断网络状态
    if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
        NSLog(@"有wifi");
    } else if ([conn currentReachabilityStatus] != NotReachable) { // 没有使用wifi, 使用手机自带网络进行上网
        NSLog(@"使用手机自带网络进行上网");
    } else { // 没有网络
        NSLog(@"没有网络");
    }
}
 
 
3.从状态中获取网络

//从状态栏中获取网络类型,代码如下:

- (NSString *)getNetWorkStates{

    UIApplication *app = [UIApplication sharedApplication];

    NSArray *children = [[[app valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews];

    NSLog(@"---%@---",children);

    NSString *state = [[NSString alloc]init];

    int netType = 0;

    //获取到网络返回码

    for (id child in children) {

        if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {

            //获取到状态栏

            netType = [[child valueForKeyPath:@"dataNetworkType"]intValue];

            

            switch (netType) {

                case 0:

                    state = @"无网络";

                    //无网模式

                    break;

                case 1:

                    state =  @"2G";

                    break;

                case 2:

                    state =  @"3G";

                    break;

                case 3:

                    state =   @"4G";

                    break;

                case 5:

                {

                    state =  @"wifi";

                    break;

                default:

                    break;

                }

            }

        }

        //根据状态选择

    }

    return state;

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值