• 检测网络状态


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

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

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

    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];
    }
     
     
     
     
  • 相关阅读:
    分布式环境下限流方案的实现redis RateLimiter Guava,Token Bucket, Leaky Bucket
    将bloomfilter(布隆过滤器)集成到scrapy-redis中
    Redis Cluster 分区实现原理
    OEM status|start|stop
    oracle 11g SQL Developer instead of isqlplus
    oracle Instance status: READY–lsnrctl status|start|stop
    oracle tns in linux
    Oracle 多实例如何通过EM进行访问-portlist.ini
    oracle command
    oracle .bash_profile
  • 原文地址:https://www.cnblogs.com/langji/p/5380056.html
Copyright © 2020-2023  润新知