Reachability.h (用于判定iPhone是否连接网络)和如何判断连接类型

+ (NSString *)getNetworkTypeFromStatusBar

{

NSString *networkType = @"";

if (IOS_VERSION >= 7.0) {

// http://www.cnblogs.com/wudan7/p/3587889.html

CTTelephonyNetworkInfo *telephonyNetworkInfo = [[CTTelephonyNetworkInfo alloc] init];

LOG(@"%@", telephonyNetworkInfo.currentRadioAccessTechnology);

networkType = telephonyNetworkInfo.currentRadioAccessTechnology;

if ([networkType isEqualToString:CTRadioAccessTechnologyGPRS]) {

networkType = @"GPRS";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyEdge]) {

networkType = @"Edge";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyWCDMA]) {

networkType = @"WCDMA";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyHSDPA]) {

networkType = @"HSDPA";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyHSUPA]) {

networkType = @"HSUPA";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyCDMA1x]) {

networkType = @"CDMA1x";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0]) {

networkType = @"CDMAEVDORev0";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA]) {

networkType = @"CDMAEVDORevA";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB]) {

networkType = @"CDMAEVDORevB";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyeHRPD]) {

networkType = @"HRPD";

} else if ([networkType isEqualToString:CTRadioAccessTechnologyLTE]) {

networkType = @"LTE";

} else {

networkType = @"";

}

//        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(radioAccessTechnologyChanged) name:CTRadioAccessTechnologyDidChangeNotification object:nil];

return networkType;

} else { // 调用Apple 私有接口

NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];

NSNumber *dataNetworkItemView = nil;

for (id subview in subviews) {

if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {

dataNetworkItemView = subview;

break;

}

}

switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"] integerValue]) {

case 0:

LOG(@"No wifi or cellular");

break;

case 1:

LOG(@"2G");

networkType = @"2G";

break;

case 2:

LOG(@"3G");

networkType = @"3G";

break;

case 3:

LOG(@"4G");

networkType = @"4G";

break;

case 4:

LOG(@"LTE");

networkType = @"LTE";

break;

case 5:

LOG(@"Wifi");

networkType = @"Wifi";

break;

default:

break;

}

return networkType;

}

}

时间: 2024-10-10 20:15:25

Reachability.h (用于判定iPhone是否连接网络)和如何判断连接类型的相关文章

【网络协议】TCP连接的建立和释放

转载请注明出处:http://blog.csdn.net/ns_code/article/details/29382883 TCP首部格式 先看TCP报文段的格式,例如以下; TCP报文段首部的前20个字节是固定的,后面有4N字节是依据须要而添加的选项.因此TCP报文段的最小长度为20个字节. 首部固定部分的各字段的意义例如以下: 1.源port和目的port:加上IP首部的源IP地址和目的IP地址,确定唯一的一个TCP连接.另外通过目的port来决定TCP将数据报交付于那个应用程序,从而实现T

[FZYZOJ 2108] 连接网络

P2108 -- 连接网络 时间限制:1000MS 内存限制:131072KB Description 接上回(本OJ的<P2107. Zrn神犇之还原数据>),Zrn神犇还原完数据,发现机房的网络连接全部中断了.他准备把机房的网络恢复起来. 机房里有若干台整齐排放的电脑和一个路由器.路由器可以提供无线网络连接(又称Wi-Fi),覆盖区域是一个以它为圆心的圆.并且,如果某个电脑联网了,它可以建立Wi-Fi热点,为其它电脑提供网络连接,类似地,覆盖区域也是一个同样大小的圆.但是,如果某个电脑无法

WMware 下linux系统连接网络

近日因学习需要尝试安装Linux开源操作系统,当然是在虚拟机环境下安装,选择的Distribution是CentOS(Community Enterprise Operating System).用惯了Windows,初步用起来还是步履维艰,遇到的第一个问题就是安装好Linux操作系统之后连不上Internet.下面就这一问题的解决过程总结一下,由于博主对网络技术领域的知识知之甚少,下面关于原理方面的介绍属于个人理解,重点在于解决遇到的实际问题. 首先介绍一下VMware的网络连接方式.我们的主

iOS开发-Reachability实时检测Wifi,2G/3G/4G/网络状态

最近遇到一个功能就是根据用户当前的网络状,用户未联网需要提示一下,如果是Wifi可以推荐一些图片新闻,如果是3G模式设置为无图的模式,获取网络状态比较简单,毕竟中国现在的流量还是一个比较贵的状态,哪天用户发现App消耗流量过多说不定就干掉了App.不过苹果的Reachability都解决了以上问题,使用起来也比较方便,具体的稍微简单分析一下. Reachability.h头文件代码: #import <Foundation/Foundation.h> #import <SystemCon

iOS 真机调试不能连接网络的排错过程

开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 gSOAP 2.8 iPhone 6S+iOS 10.1.1   问题: 使用 Qt Quick 写了一个跨平台的应用,在Win10.Android.macOS下都已经正常运行,但是连接到 iOS 真机调试的时候,gSOAP 调用 Webservice 总是返回错误代码28,我就根据百度出来的下面的 gSOAP 错误代码表一直在寻找有关 SOAP_DIME_END 的错误. 返回值错误代码表(ERROR CODE) SOA

用于文本分类的RNN-Attention网络

用于文本分类的RNN-Attention网络 https://blog.csdn.net/thriving_fcl/article/details/73381217 Attention机制在NLP上最早是被用于seq2seq的翻译类任务中,如Neural Machine Translation by Jointly Learning to Align and Translate这篇文章所说. 之后在文本分类的任务中也用上Attention机制,这篇博客主要介绍Attention机制在文本分类任务

vmware中redhat5虚拟机无法连接网络

vmware中redhat5虚拟机无法连接网络问题的解决 环境:VMWare10,Radhat Enterprise 5.8,虚拟机网络采用网桥连接方式. 问题:虚拟机中的rehl5无法连接网络 无法访问网络:ping baidu.com 返回:ping: unknown host www.baidu.com 原因:无法动态获取IP: [[email protected] ~]# ifconfig:eth0的IP显示的是IPv6 [[email protected] ~]# service ne

stdarg.h——用于函数接受可变参数

stdarg.h是C语言中C标准函数库的头文件,stdarg是由standard(标准) arguments(参数)简化而来,主要目的为让函数能够接收可变参数. 1.可变参数函数 声明可变参数函数 可变参数函数的参数数量是可变动的,它使用省略号来忽略之后的参数.例如printf函数一般.代表性的声明为: int check(int a, double b, ...); 可变参数函数最少要有一个命名的参数,所以 char *wrong(...); 在C中是不被允许的(在C++中,这样的声明是合理的

android.os.NetworkOnMainThreadException 在4.0之后谷歌强制要求连接网络不能在主线程进行访问

谷歌在4.0系统以后就禁止在主线程中进行网络访问了,原因是: 主线程是负责UI的响应,如果在主线程进行网络访问,超过5秒的话就会引发强制关闭, 所以这种耗时的操作不能放在主线程里.放在子线程里,而子线程里是不能对主线程的UI进行改变的, 因此就引出了Handler,主线程里定义Handler,子线程里使用. 消息机制的写法 [1] anr Application not response 应用无响应 主线程(UI线程) [2] 如果在主线程中进行了耗时的操作 (比如连接网络 拷贝大的数据) Th