CoreTelephony
获取运营商信息,需通过 CoreTelephony.Framework 中的 CTTelephonyNetworkInfo 和 CTCarrier 对象获取,这些都在iOS 4.0后就有了。
现提供源码,支持arc与非arc编译,使用时请引入 CoreTelephony.Framework 框架
MobileCountryCode.h + MobileCountryCode.m
//
// MobileCountryCode.h
//
// http://en.wikipedia.org/wiki/Mobile_Network_Code
//
// Created by YouXian on 14-3-24.
// Copyright (c) 2014年 YouXian. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
#warning 使用前请引入 CoreTelephony.framework 框架
@interface MobileCountryCode : NSObject
/**
获取当前运营商的标识符
@return 返回运营商标示符(成功返回标示符,失败返回nil)
中国移动 00 02 07
中国联通 01 06
中国电信 03 05
中国铁通 20
*/
+ (NSString *)serviceProvider;
@end
//
// MobileCountryCode.m
//
// http://en.wikipedia.org/wiki/Mobile_Network_Code
//
// Created by YouXian on 14-3-24.
// Copyright (c) 2014年 YouXian. All rights reserved.
//
#import "MobileCountryCode.h"
#if __has_feature(objc_arc)
#define YX_release(obj)
#define YX_autorelease(obj)
#else
#define YX_release(obj) [obj release]
#define YX_autorelease(obj) [obj autorelease]
#endif
@implementation MobileCountryCode
+ (NSString *)serviceProvider
{
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
// information about the user’s home cellular service provider
CTCarrier *carrier = [info subscriberCellularProvider];
if (carrier == nil)
{
YX_release(carrier);
carrier = nil;
return nil;
}
// The mobile network code (MNC) for the user’s cellular service provider
NSString *code = [carrier mobileNetworkCode];
if (code == nil)
{
YX_release(carrier);
carrier = nil;
return nil;
}
return code;
}
@end
运营商MNC值请参考以下链接
http://en.wikipedia.org/wiki/Mobile_Network_Code
以下为中国运营商节选
MCC | MNC | Brand | Operator | Status | Bands (MHz) | References and notes |
---|---|---|---|---|---|---|
460 | 00 | China Mobile | China Mobile | Operational | GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2600 | |
460 | 01 | China Unicom | China Unicom | Operational | GSM 900 / GSM 1800 / UMTS 2100 / TD-LTE 2300 / TD-LTE 2600 / FDD-LTE 1800 | CDMA network sold toChina Telecom, WCDMA commercial trial started in May 2009 and in full commercial operation as of October 2009. |
460 | 02 | China Mobile | China Mobile | Not Operational | GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2600 | |
460 | 03 | China Telecom | China Telecom | Operational | CDMA2000 800 / CDMA2000 2100 / FDD-LTE 2100 / TD-LTE 2300 / TD-LTE 2600 | EV-DO |
460 | 05 | China Telecom | China Telecom | Not Operational | CDMA2000 800 / CDMA2000 2100 / FDD-LTE 2100 / TD-LTE 2300 / TD-LTE 2600 | |
460 | 06 | China Unicom | China Unicom | Not Operational | GSM 900 / GSM 1800 / UMTS 2100 | |
460 | 07 | China Mobile | China Mobile | Not Operational | GSM 900 / GSM 1800 / TD-SCDMA 1900 / TD-SCDMA 2000 / TD-LTE 1900 / TD-LTE 2300 / TD-LTE 2600 | |
460 | 20 | China Tietong | China Tietong | Operational | GSM-R |