iOS实时获取网络状态之RealReachability

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_30657013/article/details/51783386

   iOS网络状态实时获取

   关于iOS网络状态获取之前一直在用Reachability,后来发现无法实时获得网络状态的变化,并且不能很好的判断网速极差情况下的网络状态,最近发现了一个好用的开源库RealReachability

   github地址:https://github.com/dustturtle/RealReachability

    依赖环境:iOS6+,Xcode5.0+,支持ARC.

    添加方法:
    最方便的:pod: pod ‘RealReachability
   手动:  下载后目录结构如下
    
        把RealReachability加入工程,并添加SystemConfiguration.framework依赖库.

            在需要使用的地方导入头文件:
            #import "RealReachability/RealReachability.h”

     主要使用途径有两种:
     1.实时触发
     在网络状态发升改变的时候会主动发出通知
   
//可以添加到didFinishLaunchingWithOptions中 程序启动即开始添加监听
[GLobalRealReachabilitystartNotifier];
    [[NSNotificationCenterdefaultCenter] addObserver:self
                                             selector:@selector(networkChanged:)
                                                 name:kRealReachabilityChangedNotification
                                               object:nil];
//在接收到通知后判断网络状态
    - (void)networkChanged:(NSNotification *)notification
{
   RealReachability *reachability = (RealReachability *)notification.object;
   ReachabilityStatus status = [reachabilitycurrentReachabilityStatus];
    switch (status)
    {
        caseRealStatusUnknown:
        {
            NSLog(@"Unknown");
           break;
        }
        caseRealStatusNotReachable:
        {
            NSLog(@"NotReachable");
           break;
        }
        caseRealStatusViaWiFi:
        {
            NSLog(@"wifi");
           break;
        }
        caseRealStatusViaWWAN:
        {
            NSLog(@"ViaWWAN");
           break;
        }
       default:
           break;
    }
}


2.主动监测网络状态

[GLobalRealReachability reachabilityWithBlock:^(ReachabilityStatus status)
     {
         switch (status)
         {
             case RealStatusUnknown:
             {
                 NSLog(@"Unknown");
                 break;
             }
                 
             case RealStatusNotReachable:
             {
                 NSLog(@"NotReachable");
                 break;
             }
                 
             case RealStatusViaWiFi:
             {
                 NSLog(@"wifi");
                 break;
             }
                 
             case RealStatusViaWWAN:
             {
                  NSLog(@"ViaWWAN");
                  WWANAccessType accessType = [GLobalRealReachability currentWWANtype];
        if (accessType == WWANType2G)
        {
            NSLog(@"RealReachabilityStatus2G");
        }
        else if (accessType == WWANType3G)
        {
            NSLog(@"RealReachabilityStatus3G");
        }
        else if (accessType == WWANType4G)
        {
            NSLog(@"RealReachabilityStatus4G");
        }
        else
        {
            NSLog(@"Unknown RealReachability WWAN Status, might be iOS6");
        }
    

                 break;
             }
             default:
                 break;
         }
     }];







     

猜你喜欢

转载自blog.csdn.net/sinat_30657013/article/details/51783386
今日推荐