iOS 实时判断网络状态(多种方法)

方法一:利用系统状态栏判断网络状态

// 状态栏是由当前app控制的,首先获取当前app
UIApplication *app = [UIApplication sharedApplication];

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

int type = 0;
for (id child in children) {
    if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
        type = [[child valueForKeyPath:@"dataNetworkType"] intValue];
    }
}
switch (type) {
    case 1:

        return @"2G";

        break;

    case 2:

        return @"3G";
    case 3:

        return @"4G";
    case 5:

        return @"WIFI";

    default:

        return @“NO-WIFI";//代表未知网络

        break;
}

当然,此方法存在一定的局限性,比如当状态栏被隐藏的时候,无法使用此方法。
参考

方法二:使用第三方库AFNetWorking判断(使用前记得导入 #import "AFNetworking.h")

[[AFNetworkReachabilityManager sharedManager] startMonitoring];
[[AFNetworkReachabilityManager sharedManager ] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
        case -1:
            NSLog(@"未知网络");
            break;
        case 0:
            NSLog(@"网络不可达");
            break;
        case 1:
            NSLog(@"GPRS网络");
            break;
        case 2:
            NSLog(@"wifi网络");
            break;
        default:
            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];
    }
}];

将此代码写在AppDelegate.m中,就可以实现实时监测网络状态了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 方法一:利用系统状态栏判断网络状态 当然,此方法存在一定的局限性,比如当状态栏被隐藏的时候,无法使用此方法。 方法...
    旧雨伞时阅读 1,006评论 0 0
  • iOS开发系列--网络开发 概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博、微信等,这些应用本身可...
    lichengjin阅读 3,721评论 2 7
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • 方法一:利用系统状态栏判断网络状态 // 状态栏是由当前app控制的,首先获取当前appUIApplication...
    Lee馍馍阅读 395评论 0 0
  • 2017年2月18日 喜欢记日记的姐姐: 你好啊! 我知道,这注定是一封无法拆阅的书信,因为你我不在同一个世界中。...
    安澜文学社阅读 322评论 2 2