zoukankan      html  css  js  c++  java
  • 检测网络状态

    在网络应用中,需要对用户设备的网络状态进行实时监控,目的是

    让用户了解自己的网络状态,防止一些误会(比如怪应用不好)

    根据用户的网络状态进行智能处理,节省用户流量,提高用户体验

    WiFi3G网络:自动下载高清图片

    低速网络:只下载缩略图

    没有网络:只显示离线的缓存数据

    1.使用AFNetworking框架

    - (void)afnMonitoring {
        AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
        
        
        [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            NSLog(@"------当前网络状态%zd",status);
        }];
        
        [manager startMonitoring];
    }
    typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) {
        AFNetworkReachabilityStatusUnknown          = -1,//未知网络
        AFNetworkReachabilityStatusNotReachable     = 0,//没有网络
        AFNetworkReachabilityStatusReachableViaWWAN = 1,//蜂窝网络
        AFNetworkReachabilityStatusReachableViaWiFi = 2,//WiFi网络
    }

    2.使用苹果官方的Reachability

    下载地址:

     
    - (void)getNetworkStatus {
        if([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
            NSLog(@"是WiFi网络");
        }else if([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
            NSLog(@"是蜂窝网络");
        }else {
            NSLog(@"网络故障");
        }
    }

    长期监控网络的状态

    - (void)applyMonitoring {
        //监听通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
        
        //开始监控网络
        self.reachability = [Reachability reachabilityForInternetConnection];
        [self.reachability startNotifier];
    }

    取消任务

    - (void)dealloc
    {
        [self.netReachability stopNotifier];
        [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
    }
     
     
     
     
  • 相关阅读:
    Windows 下 GoLang 获取当前线程ID
    使用mbedtls加解密(RSA AES)
    mysql c++ jdbc 示例
    No migrations to apply. django同步数据库失败
    python3 rsa 加解密 支持长字符串
    python3 计算rsa私钥 已知n e计算d
    linux打印控制方式
    获取进程加载的dll
    go get报错package golang.org/x/net/proxy: unrecognized
    vector中数据释放崩溃问题
  • 原文地址:https://www.cnblogs.com/langji/p/5380056.html
Copyright © 2011-2022 走看看