App中判断网络状态的3种方法

本文介绍了三种iOS中检测网络状态的方法:使用Reachability类监听网络变化并作出响应;通过Reachability类检查当前是否有可用网络连接;利用AFNetworking库管理网络可达性状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:

1。

- (void)viewDidLoad {

    [superviewDidLoad];

    [self.navigationControllersetNavigationBarHidden:NO];

    self.navigationItem.title =@"";

    ud = [NSUserDefaultsstandardUserDefaults];

    NSDictionary *attributes=[NSDictionarydictionaryWithObjectsAndKeys:[UIColorwhiteColor],NSForegroundColorAttributeName,nil];

    [self.navigationController.navigationBarsetTitleTextAttributes:attributes];

    self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:245/255.0green:118/255.0blue:147/255.0alpha:1];

    UIBarButtonItem *leftBarItem = [[UIBarButtonItemalloc] initWithTitle:@""style:UIBarButtonItemStylePlaintarget:selfaction:nil];

    self.navigationItem.leftBarButtonItem = leftBarItem;

    

    [[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(reachabilityChanged:)name:kReachabilityChangedNotificationobject:nil];

    Reachability *hostReach = [ReachabilityreachabilityWithHostName:@"www.apple.com"];

    [hostReach startNotifier];

}


-(void)reachabilityChanged:(NSNotification *)notification{

    

    Reachability  *reach = [notification object];

    if ([reach isKindOfClass:[Reachabilityclass]]) {

        NetworkStatus status= [reach currentReachabilityStatus];

        if (status == NotReachable) {

            NSLog(@"没网络");

        }else if (status ==ReachableViaWiFi){

            NSLog(@"WI-FI");

        }else if (status ==ReachableViaWWAN){

            NSLog(@"4G");

        }

    }

}


- (void)dealloc

{

    [[NSNotificationCenterdefaultCenter] removeObserver:selfname:kReachabilityChangedNotificationobject:nil];

}



2.第二种


- (void)viewDidLoad {

    [super viewDidLoad];

    [self isConnectionAvailable];

}


-(BOOL) isConnectionAvailable{

    

    BOOL isExistenceNetwork = YES;

    Reachability *reach = [ReachabilityreachabilityWithHostName:@"www.apple.com"];

    switch ([reachcurrentReachabilityStatus]) {

        caseNotReachable:

            isExistenceNetwork = NO;

            //NSLog(@"notReachable");

            break;

        caseReachableViaWiFi:

            isExistenceNetwork = YES;

            //NSLog(@"WIFI");

            break;

        caseReachableViaWWAN:

            isExistenceNetwork = YES;

            //NSLog(@"3G");

            break;

    }

    

    if (!isExistenceNetwork) {

        

        NSLog(@"断网");

        [ud setObject:@"noNet"forKey:@"net"];

    }else{

        [ud setObject:@"hasNet"forKey:@"net"];

    }

    

    return isExistenceNetwork;

}


第三种:使用AFN

 //在网络切换时,如果没登陆就执行自动登录

    AFNetworkReachabilityManager *manger = [AFNetworkReachabilityManager sharedManager];

    [manger setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

        switch (status) {

            case AFNetworkReachabilityStatusUnknown:

//                NSLog(@"未知");

                break;

            case AFNetworkReachabilityStatusNotReachable:

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

                break;

            case AFNetworkReachabilityStatusReachableViaWWAN:

//                NSLog(@"3G|4G");

//                break;

            case AFNetworkReachabilityStatusReachableViaWiFi:

            {

                //                NSLog(@"WiFi");

                //调用接口获取用户个人信息。如果可以获取到,则说明登录为超时。如果未获取到分为两种情况,第一种,已经登录过。第二种情况未登录过

                //    [self checkUserStatus];

                if (!IS_LOGIN) {

                    [self autoLogin];

                }

                if (!_isInBackground) {

                    [self applicationDidBecomeActive:[UIApplication sharedApplication]];

                }

            }

                break;

            default:

                break;

        }

    }];




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值