iOS7+ 获取网络类型
来源:互联网 发布:同步带轮生成软件 编辑:程序博客网 时间:2024/05/20 20:01
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import "MXGetNetType.h"
@implementation MXGetNetType
+(NSString *)GetNetWorkType
{
NSString *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, (structsockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
//获得连接的标志
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
//如果不能获取连接标志,则不能连接网络,直接返回
if (!didRetrieveFlags)
{
return strNetworkType;
}
//没有网络
if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
{
return @"";
}
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 ([[[UIDevicecurrentDevice]systemVersion]floatValue] >=7.0)
{
CTTelephonyNetworkInfo * info = [[CTTelephonyNetworkInfoalloc]init];
NSString *currentRadioAccessTechnology = info.currentRadioAccessTechnology;
if (currentRadioAccessTechnology)
{
if ([currentRadioAccessTechnologyisEqualToString:CTRadioAccessTechnologyLTE])
{
strNetworkType = @"4G";
}
else if ([currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] || [currentRadioAccessTechnologyisEqualToString: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 isEqualToString:@""]) {
strNetworkType = @"WWAN";
}
NSLog(@"GetNetWorkType() strNetworkType : %@", strNetworkType);
return strNetworkType;
}
@end
- iOS7+ 获取网络类型
- iOS7以后网络类型
- iOS7 以下获取网络状态
- 获取当前网络类型
- iOS 获取网络类型
- ios 获取网络类型
- ios 获取网络类型
- 获取网络类型
- 获取网络类型
- 获取网络类型
- 获取Android 运营商网络类型
- Android获取网络类型名称
- 安卓获取网络类型
- android 网络 类型 的 获取
- Java获取网络终端连接网络类型
- 判断 获取 移动 联通 网络 类型
- 获取系统当前网络的类型
- 获取手机的网络连接类型
- 5、RedHat6 集群多路径
- Tomcat布署问题备忘
- 详解如何用 SPSS + BigInsights 共同构架大数据分析平台
- Android Studio集成SVN报错:can't use subversion command line client : svn
- C 基础
- iOS7+ 获取网络类型
- Ubuntu 16.04 搭建LAMP开发环境
- win10本地系统(网络受限)CPU占用过高100%
- android-R.interpolator
- js跨框架获取html属性值
- Mybatis获取插入记录的自增长ID
- 第六章:加速计与陀螺仪
- oracle中110个常用函数介绍
- .net 多线程