iOS网络监测如何区分2、3、4G(Reachability)

首先,引入系统的Reachability类,不知道怎么引入的话,在Xcode,按下shift+command+0,搜索Reachability,看到图中所选的工程下载即可。

Apple Reachability
网络监测

iOS网络监测如何区分2、3、4G(Reachability)_第1张图片
Reachability.png

并导入相关.h文件

#import<CoreTelephony/CTTelephonyNetworkInfo.h>

引入后,Reachability.h文件里面修改NetworkStatus的枚举,

typedef enum : NSInteger {
    NotReachable = 0,
    ReachableViaWiFi,
    ReachableViaWWAN,
    kReachableVia2G,
    kReachableVia3G,
    kReachableVia4G
} NetworkStatus;

在修改下Reachability.m文件
找到

- (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags

修改下面的代码

if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
    {
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
        {

            CTTelephonyNetworkInfo * info = [[CTTelephonyNetworkInfo alloc] init];
            NSString *currentRadioAccessTechnology = info.currentRadioAccessTechnology;
            if (currentRadioAccessTechnology)
            {
                if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE])
                {
                    returnValue =  kReachableVia4G;
                }
                else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS])
                {
                    returnValue =  kReachableVia2G;
                }
                else
                {
                    returnValue =  kReachableVia3G;
                }
                return returnValue;

            }
        }

        if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection)
        {
            if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired)
            {
                returnValue =  kReachableVia2G;
                return returnValue;
            }
            returnValue =  kReachableVia3G;
            return returnValue;
        }

        returnValue = ReachableViaWWAN;
    }

如何使用?

在AppDelegate里加入

    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
    NetworkStatus status = [curReach currentReachabilityStatus];

    switch (status)
    {

        case NotReachable:
            break;

        case ReachableViaWiFi:
        case ReachableViaWWAN:
            break;

        case kReachableVia2G:
            break;

        case kReachableVia3G:
            break;

        case kReachableVia4G:
            break;
    }

转自:http://www.jianshu.com/p/efcfa3c87306

你可能感兴趣的:(Reachability,检测网络,检测234G,iOS网络监测,检测wifi)