码迷,mamicode.com
首页 > 其他好文 > 详细

通过RealReachability实现当前网络的监测

时间:2018-09-07 15:58:41      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:网络状态   处理   完成   sele   star   network   obj   连接   自己   

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

方法一: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];

通过RealReachability实现当前网络的监测

标签:网络状态   处理   完成   sele   star   network   obj   连接   自己   

原文地址:https://www.cnblogs.com/GoodmorningMr/p/9604812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!