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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

IOS判断用户的网络类型(2/3/4G、wifi)

發布時間:2025/7/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS判断用户的网络类型(2/3/4G、wifi) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直接貼代碼吧,ios7之后是獲取的較為準確,7以下我拿iphone5測試的是無法區分3g/2g。連iphone4都能升到7.1.4,而且目前主流的設備7以下的系統已經很少了,這個方案盡管不太完美,但影響不會太大

?

#import <CoreTelephony/CTTelephonyNetworkInfo.h>
?
string GetNetWorkType()
{
??? string strNetworkType = "";
???
??? //創建零地址,0.0.0.0的地址表示查詢本機的網絡連接狀態
??? struct sockaddr_storage zeroAddress;
???
??? bzero(&zeroAddress, sizeof(zeroAddress));
??? zeroAddress.ss_len = sizeof(zeroAddress);
??? zeroAddress.ss_family = AF_INET;
???
??? // Recover reachability flags
??? SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
??? SCNetworkReachabilityFlags flags;
???
??? //獲得連接的標志
??? BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
??? CFRelease(defaultRouteReachability);
???
??? //如果不能獲取連接標志,則不能連接網絡,直接返回
??? if (!didRetrieveFlags)
??? {
??????? return strNetworkType;
??? }
???
???
??? if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
??? {
??????? // if target host is reachable and no connection is required
??????? // then we'll assume (for now) that your on Wi-Fi
??????? strNetworkType = "WIFI";
??? }
???
??? if (
??????? ((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) ||
??????? (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0
??????? )
??? {
??????? // ... and the connection is on-demand (or on-traffic) if the
??????? // calling application is using the CFSocketStream or higher APIs
??????? if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
??????? {
??????????? // ... and no [user] intervention is needed
??????????? strNetworkType = "WIFI";
??????? }
??? }
???
??? 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])
??????????????? {
??????????????????? strNetworkType =? "4G";
??????????????? }
??????????????? else?if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS])
??????????????? {
??????????????????? strNetworkType =? "2G";
??????????????? }
??????????????? else
??????????????? {
??????????????????? strNetworkType =? "3G";
??????????????? }
??????????? }
??????? }
??????? else
??????? {
??????????? if((flags & kSCNetworkReachabilityFlagsReachable) == kSCNetworkReachabilityFlagsReachable)
??????????? {
??????????????? if ((flags & kSCNetworkReachabilityFlagsTransientConnection) == kSCNetworkReachabilityFlagsTransientConnection)
??????????????? {
??????????????????? if((flags & kSCNetworkReachabilityFlagsConnectionRequired) == kSCNetworkReachabilityFlagsConnectionRequired)
??????????????????? {
??????????????????????? strNetworkType = "2G";
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? strNetworkType = "3G";
??????????????????? }
??????????????? }
??????????? }
??????? }
??? }
???
???
??? if (strNetworkType == "") {
??????? strNetworkType = "WWAN";
??? }
???
??? NSLog( @"GetNetWorkType() strNetworkType :? %s", strNetworkType.c_str());
???
??? return strNetworkType;
}

?

參考鏈接:

http://blog.csdn.net/justinjing0612/article/details/8741261

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

http://www.cnblogs.com/xiaohuzi1990/p/4341655.html

總結

以上是生活随笔為你收集整理的IOS判断用户的网络类型(2/3/4G、wifi)的全部內容,希望文章能夠幫你解決所遇到的問題。

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