zoukankan      html  css  js  c++  java
  • 通过RealReachability实现当前网络的监测

    在一些消耗流量较大的应用中我们需要对当前的网络状态进行实时监测,根据用户的网络状态进行智能处理业务中的一些数据交换,节省用户流量,提高用户体验;使用户了解自己当前的网络状态,以免无辜背锅

    方法一:RealReachability

    RealReachability引入了ping能力(此方案流量开销最小,也最简单),实现了简单的实际网络连接监测。

    在实际的项目中,我将RealReachability封装到了一个工具类中,代码如下

    -(void)listenNetWorkingStatus{
        GLobalRealReachability.hostForPing = @"www.baidu.com";
        GLobalRealReachability.autoCheckInterval = 5.0f;
    
        [GLobalRealReachability startNotifier];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(networkChanged:)
                                                     name:kRealReachabilityChangedNotification
                                                   object:nil];
        ReachabilityStatus status = [GLobalRealReachability currentReachabilityStatus];
        [self realNetworkingStatus:status];
    }
    
    - (void)networkChanged:(NSNotification *)notification
    {
        RealReachability *reachability = (RealReachability *)notification.object;
        ReachabilityStatus status = [reachability currentReachabilityStatus];
        [self realNetworkingStatus:status];
    }
    
    -(void)realNetworkingStatus:(ReachabilityStatus)status{
        switch (status)
        {
                case RealStatusUnknown:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusUnknown");
                self.netStatus = NetStatusUnknown;
                break;
            }
                
                case RealStatusNotReachable:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusNotReachable");
                self.netStatus = NetStatusNotReachable;
                break;
            }
                
                case RealStatusViaWWAN:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusViaWWAN");
                self.netStatus = NetStatusViaWWAN;
                break;
            }
                case RealStatusViaWiFi:
            {
                NSLog(@"~~~~~~~~~~~~~RealStatusViaWiFi");
                self.netStatus = NetStatusViaWiFi;
                break;
            }
            default:
                break;
        }
    }
    

    外部调用下面方法后即可完成网络的监测功能

    [[NetChackManager shareManager] listenNetWorkingStatus];
    
  • 相关阅读:
    3288 积木大赛
    3284 疯狂的黄大神
    1531 山峰
    1018 单词接龙
    1432 总数统计
    1507 酒厂选址
    1063 合并果子
    几个sort不能过的题目
    poj 2245 Lotto
    求两圆相交面积模板
  • 原文地址:https://www.cnblogs.com/GoodmorningMr/p/9604812.html
Copyright © 2011-2022 走看看