偶然看见了别人的博客关于ios网络运营商的判断,都是基于MNC的判断,但是实际出来的code跟判断的不一样,MNC判断见这里http://blog.sina.com.cn/s/blog_5ccfd2d50100yxuy.html。
修改了下,还是直接拿系统的carrierName来判断,代码如下
/**
* 网络运营商类别
*
*/
#import <Foundation/Foundation.h>
typedef enum
{
NetworkTypeChinaMobile, //中国移动
NetworkTypeChinaUnicom, //中国联通
NetworkTypeChinaTelecom, //中国电信
NetworkTypeChinaTietong, //中国铁通
NetworkTypeOther
}NetworkTypeEnum;
@interface NetworkType : NSObject
//用来辨别设备所使用网络的运营商
+ (NetworkTypeEnum)checkType;
@end
//
// NetworkType.m
// NetworkType
//
// Created by JianYe on 14-1-24.
// Copyright (c) 2014年 YingYing. All rights reserved.
//
#import "NetworkType.h"
#import<CoreTelephony/CTTelephonyNetworkInfo.h>
#import<CoreTelephony/CTCarrier.h>
@implementation NetworkType
//用来辨别设备所使用网络的运营商
+ (NetworkTypeEnum)checkType
{
NetworkTypeEnum type = NetworkTypeOther;
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [info subscriberCellularProvider];
NSString *carrierName = [carrier carrierName];
NSLog(@"%@",carrierName);
if ([NetworkType contains:@"移动" on:carrierName]) {
return NetworkTypeChinaMobile;
}
if ([NetworkType contains:@"电信" on:carrierName]) {
return NetworkTypeChinaTelecom;
}
if ([NetworkType contains:@"联通" on:carrierName]) {
return NetworkTypeChinaUnicom;
}
if ([NetworkType contains:@"铁通" on:carrierName]) {
return NetworkTypeChinaTietong;
}
return type;
}
+ (BOOL)contains:(NSString *)strSearchTerm on:(NSString *)strText
{
return [strText rangeOfString:strSearchTerm options:NSCaseInsensitiveSearch].location==NSNotFound?NO:YES;
}
@end