ios开发网络 运营商型号判断

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";
}


上述代码的实例程序

https://github.com/sixTiger/-_-/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值