星空网 > 软件开发 > 操作系统

iOS网络检测Reachability 使用 Demo,可检测2、3、4G

你可以在Github下载这个Demo https://github.com/JanzTam/Reachability_Demo

 

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

iOS网络检测Reachability 使用 Demo,可检测2、3、4Gimages/loading.gif' data-original="http://upload-images.jianshu.io/upload_images/185624-9f9f9a5311b1d7e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240/format/jpg" data-original-src='/images/loading.gif' data-original="http://upload-images.jianshu.io/upload_images/185624-9f9f9a5311b1d7e1.png?imageMogr2/auto-orient/strip%7CimageView2/2/format/jpg" />
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里加入

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{  //设置状态栏  [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];  // 监测网络情况  [[NSNotificationCenter defaultCenter] addObserver:self                       selector:@selector(reachabilityChanged:)                         name: kReachabilityChangedNotification                        object: nil];  hostReach = [Reachability reachabilityWithHostName:@"www.baidu.com"];  [hostReach startNotifier];}
- (void)reachabilityChanged:(NSNotification *)note{  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;  }}



原标题:iOS网络检测Reachability 使用 Demo,可检测2、3、4G

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流