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];
    
  • 相关阅读:
    Objective C 快速入门学习五
    Objective C 快速入门学习四
    Objective C 快速入门学习三
    Objective C 快速入门学习二
    Objective C 快速入门学习一
    基于内容的音频和音乐分析领域的研究工作
    特征选择常用算法综述
    外包项目网站积累
    IOS开发资料积累
    小心被“杜比”认证忽悠了
  • 原文地址:https://www.cnblogs.com/GoodmorningMr/p/9604812.html
Copyright © 2011-2022 走看看