日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 检测设备所连接的WiFi、4G等网络是否真的可以连通

發布時間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 检测设备所连接的WiFi、4G等网络是否真的可以连通 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在開發過程我們經常會遇到,獲取手機連接的WiFi、4G等狀態,并且判斷是否連接網絡,通常我們使用AFNetworking、Reachability等庫,只要判斷連接上WiFi或者4G就表明他已經連接網絡并使用,但是有時候我們所連接的網絡雖然有狀態但是不代表一定網絡可以連通,顯然這兩個庫并不一定滿足我們的使用。所以我在網上查到一位博主發的一個帖子,經測試這個方法確實可用。

//測試網絡是否同的連接 #define kAppleUrlTocheckWifi @"http://captive.apple.com"

下面便是使用的方法

+ (BOOL)checkNetworkCanUse{// 1.將網址初始化成一個OC字符串對象NSString *urlStr = kAppleUrlTocheckWifi;// 如果網址中存在中文,進行URLEncodeNSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];// 2.構建網絡URL對象, NSURLNSURL *url = [NSURL URLWithString:newUrlStr];// 3.創建網絡請求NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:3];// 創建同步鏈接NSURLResponse *response = nil;NSError *error = nil;NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];NSString* result1 = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];//解析html頁面NSString *str = [self flattenHTML:result1];//除掉換行符NSString *nstr = [str stringByReplacingOccurrencesOfString:@"\n" withString:@""];NSLog(@"nstr - - - - - - - - %@",nstr);if ([nstr isEqualToString:@"SuccessSuccess"]){// NSLog(@"可以上網了");return YES;}else {// NSLog(@"未聯網");return NO;}}//過濾后臺返回字符串中的標簽 + (NSString *)flattenHTML:(NSString *)html {NSScanner *theScanner;NSString *text = nil;theScanner = [NSScanner scannerWithString:html];while ([theScanner isAtEnd] == NO) {[theScanner scanUpToString:@"<" intoString:NULL] ;[theScanner scanUpToString:@">" intoString:&text] ;html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>", text]withString:@""];}return html; }

使用方法

//NetRequestClass未類名 [NetRequestClass checkNetworkCanUse];

到此判斷手機連接網絡是否可以真正連通就結束了。

在提供一個原生的判斷網絡連接類型的方法,使用AFNetworking等庫提供的也是沒有任何問題的

#pragma mark - 監測網絡是什么類型 + ( BOOL )determineTheTypeOfTheNetwork{__block BOOL _netState = NO;//獲取到網絡返回碼for (id child in [[[[UIApplication sharedApplication] valueForKeyPath:@"statusBar"]valueForKeyPath:@"foregroundView"]subviews]) {if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {//獲取到狀態欄switch ([[child valueForKeyPath:@"dataNetworkType"]intValue]) {case 0: case 1: case 2: case 3:// 0 = @"無網絡";1 = @"2G"; 2 = @"3G"; 3 = @"4G";_netState = NO;break;case 5: //5 = @"wifi";_netState = YES;break;default:break;}}}return _netState; }

?

總結

以上是生活随笔為你收集整理的iOS 检测设备所连接的WiFi、4G等网络是否真的可以连通的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。