1、根据状态栏判断网络的状态
这个方法最简单 可能会有问题
如果觉得不放心的话可以使用苹果提供的网络判断方法
苹果官方气功的实例代码
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
下面是偷懒的方法
可判断2G、3G、4G、LET、WIFI
网络类型
typedef enum {
NETWORK_TYPE_NONE, // 没有联网
NETWORK_TYPE_2G , // 2G
NETWORK_TYPE_3G , // 3G
NETWORK_TYPE_4G , // 4G
NETWORK_TYPE_LET , // LTE
NETWORK_TYPE_WIFI,
}NETWORK_TYPE;
- (NETWORK_TYPE)getNetworkTypeFromStatusBar
{
UIApplication *app = [UIApplication sharedApplication];
NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];
NSNumber *dataNetworkItemView = nil;
for (id subview in subviews)
{
if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]])
{
dataNetworkItemView = subview;
break;
}
}
NETWORK_TYPE nettype = NETWORK_TYPE_NONE;
NSNumber * num = [dataNetworkItemView valueForKey:@"dataNetworkType"];
nettype = [num intValue];
return nettype;
}
2 、 运营商的判断
下边的代码中的code,如“00”是确定的 如下图
可在这里查询 http://en.wikipedia.org/wiki/Mobile_country_code
如有变化可自行修改
具体代码如下
/*关于获取运营商信息,需通过CoreTelephony Framework中的CTTelephonyNetworkInfo和CTCarrier类型。这些都在iOS 4.0后就有了。
import必要的header:
#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
何判断当前网络的运营商
*/
//用来辨别设备所使用网络的运营商
- (NSString*)getMobileOperatorsName
{
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [info subscriberCellularProvider];
if (carrier == nil)
{
return @"0";
}
NSString *code = [carrier mobileNetworkCode];
NSLog(@"%@",code);
switch (code.intValue) {
case 00:
case 02:
case 07:
return @"China Mobile 移动";
break;
case 01:
case 06:
return @"China Unicom 联通";
break;
case 03:
case 05:
return @"China Telecom d电信";
break;
case 20:
return @"China Tietong 铁通";
break;
default:
break;
}
return @"not in china";
}
上述代码的实例程序