iOS網(wǎng)絡(luò)監(jiān)測(cè)如何區(qū)分2、3擎勘、4G?
轉(zhuǎn)自:
http://www.reibang.com/users/e2b4fcf4de34/latest_articles
你可以在
Github下載這個(gè)Demo
首先咱揍,引入系統(tǒng)的Reachability類,不知道怎么引入的話棚饵,在Xcode煤裙,按下shift+command+0掩完,搜索Reachability,看到圖中所選的工程下載即可硼砰。
并導(dǎo)入相關(guān).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{ //設(shè)置狀態(tài)欄 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault]; // 監(jiān)測(cè)網(wǎng)絡(luò)情況 [[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; }}
一起學(xué)習(xí)恶阴,一起進(jìn)步!互相分享干貨豹障,探討問(wèn)題iOS進(jìn)階交流群:68045643(因群成員較多冯事,為了群里有個(gè)好的環(huán)境,防止廣告狗亂入血公,申請(qǐng)進(jìn)群請(qǐng)?zhí)峁ゞithub或者blog等證明你是開(kāi)發(fā)者)