使用 CoreTelephony 框架获取当前网络运营商

简介:

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  

 

 

 

 

 

 

 

 

目录
相关文章
|
1月前
|
监控 安全
从 Racket 语言出发,创新员工网络监控软件的框架
在数字化企业环境中,员工网络监控软件对于保障信息安全和提升效率至关重要。Racket 语言凭借其独特特性和强大功能,为开发创新的监控软件提供了新可能。通过捕获和分析网络数据包、记录员工网络活动日志,甚至构建复杂的监控框架,Racket 能够满足企业的定制化需求,为企业信息安全和管理提供强有力支持。未来,基于 Racket 的创新解决方案将不断涌现。
41 6
|
19天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
61 6
|
27天前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
57 3
|
12天前
|
存储 安全 网络安全
网络安全法律框架:全球视角下的合规性分析
网络安全法律框架:全球视角下的合规性分析
25 1
|
20天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
47 4
|
20天前
|
网络协议 物联网 API
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第26天】Python 是一门功能强大且易于学习的编程语言,Twisted 框架以其事件驱动和异步IO处理能力,在网络编程领域独树一帜。本文深入探讨 Twisted 的异步IO机制,并通过实战示例展示其强大功能。示例包括创建简单HTTP服务器,展示如何高效处理大量并发连接。
39 1
|
8天前
|
网络协议 Unix Linux
精选2款C#/.NET开源且功能强大的网络通信框架
精选2款C#/.NET开源且功能强大的网络通信框架
|
8天前
|
网络协议 网络安全 Apache
一个整合性、功能丰富的.NET网络通信框架
一个整合性、功能丰富的.NET网络通信框架
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
51 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
19天前
|
网络协议 调度 开发者
Python网络编程:Twisted框架的异步IO处理与实战
【10月更文挑战第27天】本文介绍了Python网络编程中的Twisted框架,重点讲解了其异步IO处理机制。通过反应器模式,Twisted能够在单线程中高效处理多个网络连接。文章提供了两个实战示例:一个简单的Echo服务器和一个HTTP服务器,展示了Twisted的强大功能和灵活性。
30 0

热门文章

最新文章

下一篇
无影云桌面