日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解IOS判斷當前網絡狀態的三種方法

瀏覽:158日期:2022-09-16 17:28:53

在項目中,為了好的用戶體驗,有些場景必須線判斷網絡狀態,然后才能決定該干嘛。比如視頻播放,需要線判斷是Wifi還是4G,Wifi直接播放,4G先提示用戶。獲取網絡狀態的方法大概有三種:

1. Reachability

這是蘋果的官方演示demo中使用到的方法,我們可以到蘋果官方文檔里下載Demo(點擊左上角Download Sample Code 即可下載),然后把Demo里的Reachability.h和.m考到自己項目中,并在Build Phases 的 Link Binary 添加SystemConfiguration.framework框架,然后在需要使用的地方導入Reachability頭文件

在 Reachability頭文件中我們可以看到無網絡,wifi和蜂窩網三個網絡狀態的枚舉值,如下:

typedef enum : NSInteger { NotReachable = 0, ReachableViaWiFi, ReachableViaWWAN} NetworkStatus;(1)獲取網絡狀態

在iOS 7之前,當用戶網絡為蜂窩網絡時,是沒法判斷3G、4G等網絡類型的,iOS 7 后是可以判斷的

(NSString *)internetStatus { Reachability *reachability = [Reachability reachabilityWithHostName:@'www.apple.com']; NetworkStatus internetStatus = [reachability currentReachabilityStatus]; NSString *net = @'WIFI'; switch (internetStatus) {case ReachableViaWiFi: net = @'WIFI'; break;case ReachableViaWWAN: net = @'蜂窩數據'; //net = [self getNetType ]; //判斷具體類型 break;case NotReachable: net = @'當前無網路連接';default: break; } return net;}(2)當用戶為手機自帶網絡時,判斷具體網絡類型

這時可以使用系統自帶的API來判斷是2G、3G還是4G,這就要使用到CTTelephonyNetworkInfo這類,記得在工程添加CoreTelephony.framework,并導入頭文件

- (NSString *)getNetType{ CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; NSString *currentStatus = info.currentRadioAccessTechnology; if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyGPRS']) {netconnType = @'GPRS'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyEdge']) {netconnType = @'2.75G EDGE'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyWCDMA']){netconnType = @'3G'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyHSDPA']){netconnType = @'3.5G HSDPA'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyHSUPA']){netconnType = @'3.5G HSUPA'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyCDMA1x']){netconnType = @'2G'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyCDMAEVDORev0']){netconnType = @'3G'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyCDMAEVDORevA']){netconnType = @'3G'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyCDMAEVDORevB']){netconnType = @'3G'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyeHRPD']){netconnType = @'HRPD'; }else if ([currentStatus isEqualToString:@'CTRadioAccessTechnologyLTE']){netconnType = @'4G'; }}

用此方法判斷的蜂窩網絡類型有如下類型:

CTRadioAccessTechnologyGPRS         //介于2G和3G之間,也叫2.5G ,過度技術

CTRadioAccessTechnologyEdge         //EDGE為GPRS到第三代移動通信的過渡,EDGE俗稱2.75G

CTRadioAccessTechnologyWCDMA

CTRadioAccessTechnologyHSDPA            //亦稱為3.5G(3?G)

CTRadioAccessTechnologyHSUPA            //3G到4G的過度技術

CTRadioAccessTechnologyCDMA1x       //3G

CTRadioAccessTechnologyCDMAEVDORev0    //3G標準

CTRadioAccessTechnologyCDMAEVDORevA

CTRadioAccessTechnologyCDMAEVDORevB

CTRadioAccessTechnologyeHRPD        //電信使用的一種3G到4G的演進技術, 3.75G

CTRadioAccessTechnologyLTE          //接近4G

2. 通過系統statusBar判斷

這種方法在iPhone X 上可能引起奔潰,可能是蘋果修改了statusBar的keyPath,所以拿到的東西為nil,導致崩潰//獲取當前網絡狀態  (iPhone X 上可能引發崩潰)

+ (NSString *)networkingStatesFromStatebar { // 狀態欄是由當前app控制的,首先獲取當前app UIApplication *app = [UIApplication sharedApplication]; //iphone X 會在這里崩潰 NSArray *children = [[[app valueForKeyPath:@'statusBar'] valueForKeyPath:@'foregroundView'] subviews]; int type = 0; for (id child in children) {if ([child isKindOfClass:[NSClassFromString(@'UIStatusBarDataNetworkItemView') class]]) { type = [[child valueForKeyPath:@'dataNetworkType'] intValue];} } NSString *stateString = @'wifi'; switch (type) {case 0: stateString = @'notReachable'; break;case 1: stateString = @'2G'; break;case 2: stateString = @'3G'; break;case 3: stateString = @'4G'; break;case 4: stateString = @'LTE'; break;case 5: stateString = @'wifi'; break;default: break; } return stateString;}3. 通過AFNetworking

此方法可以寫在AppDelegate中,每當網絡狀態發生變化時,就可以發通知,實時監測網絡變化,然后做相應的處理

#pragma mark - ------------- 監測網絡狀態 -------------- (void)monitorNetworking{ [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {switch (status) { case -1:NSLog(@'未知網絡');break; case 0:NSLog(@'網絡不可達');break; case 1:{NSLog(@'GPRS網絡');//發通知,帶頭搞事[[NSNotificationCenter defaultCenter] postNotificationName:@'monitorNetworking' object:@'1' userInfo:nil];} break; case 2:{NSLog(@'wifi網絡');//發通知,搞事情[[NSNotificationCenter defaultCenter] postNotificationName:@'monitorNetworking' object:@'2' userInfo:nil];}break; default:break;}if (status == AFNetworkReachabilityStatusReachableViaWWAN || status == AFNetworkReachabilityStatusReachableViaWiFi) { NSLog(@'有網');}else{ NSLog(@'沒網');} }];}

以上就是詳解IOS判斷當前網絡狀態的三種方法的詳細內容,更多關于IOS判斷當前網絡狀態的資料請關注好吧啦網其它相關文章!

標簽: IOS
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品毛片久久| 亚洲婷婷在线| 精品在线网站观看| 99香蕉国产精品偷在线观看 | 蜜臀av免费一区二区三区| 日日夜夜免费精品| 伊人久久高清| 国产精品超碰| 国产精品国产一区| 国产一区二区三区黄网站| 亚洲国产日韩欧美在线| 日本在线不卡视频| 久久精品一区二区国产| 亚洲成人二区| 亚洲精品韩国| 国产精品啊v在线| 99精品美女| 日韩视频一区二区三区在线播放免费观看| 亚洲一区导航| 成人精品高清在线视频| 三级精品视频| 综合激情五月婷婷| 久久一区欧美| 香蕉久久久久久久av网站| 亚洲啊v在线| 免费在线观看日韩欧美| 久久精品欧美一区| 精品一区二区三区四区五区| 日韩福利视频导航| 久久国产99| 91久久久精品国产| 国产在线看片免费视频在线观看| 国产精品密蕾丝视频下载| 中文一区一区三区免费在线观 | 日韩成人a**站| 国产免费av一区二区三区| 国产精品丝袜xxxxxxx| 99精品视频精品精品视频| 91欧美在线| 国产一区二区三区亚洲综合| 国产日韩欧美三区| 欧美日韩亚洲三区| 日本va欧美va精品发布| 亚洲乱码久久| 亚洲精品第一| 爽好久久久欧美精品| 欧美特黄一级| 亚洲欧洲另类| 亚洲一区黄色| 一区二区亚洲视频| 日韩精品午夜视频| 日本中文字幕不卡| 日韩有吗在线观看| 日本国产亚洲| 日本a级不卡| 欧美亚洲国产日韩| 日本不卡不码高清免费观看| 综合激情视频| 日韩av中文字幕一区二区| 日韩国产欧美在线播放| 日韩精品三级| 久久精品97| 老鸭窝一区二区久久精品| 久久免费福利| 国产成人久久精品麻豆二区| av日韩中文| 日韩精品免费一区二区在线观看 | 日韩中文在线电影| 99精品在线观看| 黄色日韩在线| 中文视频一区| 国产欧美大片| 国产美女高潮在线观看| 久久香蕉国产| 欧美网站在线| 美女精品在线观看| 免费国产亚洲视频| 国产亚洲欧美日韩在线观看一区二区 | 在线中文字幕播放| 99久精品视频在线观看视频| 伊人精品一区| 中文字幕av亚洲精品一部二部| 日本成人在线网站| 精品久久在线| 99久久夜色精品国产亚洲狼 | 日韩有吗在线观看| 美女视频黄免费的久久| 91亚洲国产| 国产亚洲精品v| 人人爱人人干婷婷丁香亚洲| 精品国产精品久久一区免费式| 欧美一区久久久| 午夜国产欧美理论在线播放| 色8久久久久| 国产精品白浆| 亚州av乱码久久精品蜜桃| 日韩精品一级| 国产网站在线| 影音先锋久久精品| 精品美女视频| 黄色成人91| 国产精品久久久久久妇女 | 欧美在线精品一区| 另类专区亚洲| 亚洲人亚洲人色久| 国产精品成人a在线观看| 免费欧美一区| 国产精品久av福利在线观看| 高清不卡亚洲| 中文字幕免费一区二区| 久久精品理论片| 亚洲免费成人| 欧美国产专区| 午夜日韩av| 久久精品一区二区三区中文字幕| 婷婷综合激情| 免费一级欧美片在线观看网站| 欧美日韩国产一区二区三区不卡| 欧美一区成人| 成人久久久久| 欧美综合精品| 国产在线欧美| 国产精品一区二区三区av麻| 亚洲一级特黄| 久久这里只有| 亚洲综合三区| 97精品国产| 日韩国产欧美视频| 亚洲一本视频| 久久精品九色| 日韩三级一区| 不卡中文字幕| 精品一区二区三区亚洲 | 免费成人性网站| 快播电影网址老女人久久| 日本国产一区| 国产午夜精品一区二区三区欧美| 精品欧美日韩精品| 亚洲欧美网站在线观看| 久久久久国产| 精品高清久久| 欧美日韩伊人| 免费观看在线综合| 国产99精品| 精品视频在线你懂得| 日本在线视频一区二区| 午夜欧美理论片| 免费高潮视频95在线观看网站| 国产精品伦一区二区| 一区二区三区国产盗摄| 欧美日韩高清| 欧美日韩视频网站| 精品亚洲精品| 欧美精品成人| 日本一区中文字幕| 三级一区在线视频先锋| 91精品国产乱码久久久久久久| 久久久久97| 国产精品一线天粉嫩av| 偷拍亚洲精品| 一区二区国产在线| 欧美一区=区| 女人天堂亚洲aⅴ在线观看| 日韩免费福利视频| 色欧美自拍视频| 日韩欧美少妇| 激情综合自拍| 国产精品普通话对白| 免费一级片91| 日本成人在线不卡视频| 国产精品99久久精品| 亚洲精品激情| 亚洲综合激情在线| 免费在线观看一区二区三区| 国产精品老牛| 欧美日韩免费观看视频| 国产精东传媒成人av电影| 福利一区二区免费视频| 都市激情国产精品| 日韩三区免费| 亚洲欧美日韩专区| 日韩精品久久久久久| 国产精品xxxav免费视频| 色乱码一区二区三区网站| 日韩精品免费一区二区在线观看| 国产国产精品| 五月激激激综合网色播| 免费视频一区二区三区在线观看| 97精品一区| 红桃视频国产精品| 日韩国产精品久久久久久亚洲| 国产另类在线| 在线天堂资源www在线污| 欧美天堂亚洲电影院在线观看| 美国三级日本三级久久99| 91午夜精品| 91一区二区三区四区| 国产精品女主播一区二区三区| 日本一区免费网站| 久久精品天堂|