iOS开发之根据状态栏获取网络的连接状态

大家在开发过程中,不乏会用到有时候获取手机是否联网,或者是当前的网络连接状态等。那么即有了以下内容。

   

    根据状态栏获取网络状态,可以区分2G、3G、4G、WIFI,系统的方法,比较快捷。稍微不爽的就是万一连接的WIFI没有联网的话。

   

       下面为代码区域


intDemoCodeClass::getDeviceNetworkAvailabl()

{



    UIApplication *app = [UIApplicationsharedApplication];

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

    int stateNumber =0;

    NSString *state = [[NSStringalloc]init];

    int netType =0;

    state = @"false";

    //获取到网络返回码

    for (id childin children) {

        if ([childisKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {

            //获取到状态栏

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

            

            NSLog(@"%d",netType);

            switch (netType) {

                case0:

                    //state = @"无网络";

                    state = @"false";

                    NSLog(@"%s","0,无网络");

                    stateNumber = 0;

                    //无网模式

                    break;

                case1:

                    //state = @"2G";

                    state = @"true";

                    NSLog(@"%s","1,2G");

                    stateNumber = 1;

                    break;

                case2:

                    //state = @"3G";

                    state = @"true";

                    NSLog(@"%s","2,3G");

                    stateNumber = 1;

                    break;

                case3:

                    //state = @"4G";

                    state = @"true";

                    NSLog(@"%s","3,4G");

                    stateNumber = 1;

                    break;

                case5:

                {

                    //state = @"WIFI";

                    state = @"true";

                    NSLog(@"%s","5,WIFI");

                    stateNumber = 1;

                    break;

                }

                default:

                    break;

            }

        }

    }

    

    //根据状态选择

    //return state;

    

    constchar *content = [statecStringUsingEncoding:NSASCIIStringEncoding];

    //return content;

    return stateNumber;

}


//state = @"无网络";


//state = @"2G";

//state = @"3G";

//state = @"4G";

//state = @"WIFI";


最后根据stateNumber值来判断就OK了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值