以下转自 http://zonble.net/archives/2010_06/1330.php,注意要加头文件目录 /System/Library/Frameworks/CoreTelephony.framework/Headers 到 build 设置 Header Search Paths,并在使用到这些类中加头文件,例如
   1. #import "CTCarrier.h"
   2. #import "CTTelephonyNetworkInfo.h"


iOS 4.0 的官方 API 里头,多了一个叫做 Core Telephony 的 framework;一直以来 Core Telephony 都是 private API,现在开放出来,但是从文件来看,里头根本没有几行,既没有告诉你应该怎么用,也没有范例,你从 framework 里头寥寥四个 class 的 header 中,也搞不清楚,究竟可以把这个东西用在什么用途上。

目前只知道可以拿来做两件事情:1. 知道目前你这只 iPhone 用的是哪个电信商的服务;2. 知道现在 iPhone 是不是在打电话。

※ 电信商资讯

用 CTTelephonyNetworkInfo 与 CTCarrier 这两个 class,就可以取得电信商资讯,例如:

CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = info.subscriberCellularProvider;
NSLog(@"carrier:%@", [carrier description]);

倒出来的结果像是:

CTCarrier (0x140dc0) {
    Carrier name: [中华电信]
    Mobile Country Code: [466]
    Mobile Network Code:[92]
    ISO Country Code:[tw]
    Allows VOIP? [YES]
}

然后,如果你对 CTTelephonyNetworkInfo 喂一个 block 进去,像是:

info.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) {NSLog(@"carrier:%@", [carrier description]);};

如 此一来,当你的 iPhone 漫游到了其他网路的时候,就会执行你这段 block,但光是知道手机现在漫游在哪个电信商的网路里头,大概能做的,就是一些跟电信商关系密切的服务之类,你或许可以决定软体里头有哪些功能,一定 要在某个电信商的网路才能用;电信商自己做 iPhone 软体的时候大概会想做这种事情。
※ 通话资料

用 CTCallCenter 与 CTCall 这两个 class,便可以知道目前 iPhone 是否在通话中。CTCallCenter 的用途是用来监控是不是有电话打进来、正在接听、或是已经挂断,而 CTCall 则是将每一则通话事件包装成一个物件。我们先写一小段程式-

CTCallCenter *center = [[CTCallCenter alloc] init];
center.callEventHandler = ^(CTCall *call) {
    NSLog(@"call:%@", [call description]);
};

然后,在实机上执行,接著打通电话到这支 iPhone 上,打通电话进去,然后马上挂断(人好端端的,干嘛为了测试程式跟自己的电话费帐单过不去呢?)就可以看到 iPhone 执行了我们的 block,把 CTCall 物件倒出来:

CTCall (0x143400) {
    callState: [CTCallStateIncoming]
    Call ID: [CE5F9337-1990-4254-8797-1CCEA85B061B]
}
CTCall (0x10bac0) {
    callState: [CTCallStateDisconnected]
    Call ID: [CE5F9337-1990-4254-8797-1CCEA85B061B]
}

CTCall 物件只有两个属性,一是通话状态(来电中、通话中…),二是这则通话的 unique id,除此之外没有其他资讯,你没办法知道这通电话是从哪里打来的,只能知道有电话进来而已,也没办法透过这个 API 打电话出去。

大抵上可以想到的用途,就是当你的程式执行到一半的时候,程式流程被电话打断,这时候就可能要中断原本正在做的事情,在通话结束之后恢复。

最后,CTCallCenter 与 CTTelephonyNetworkInfo,在模拟器上是没有办法用的,呼叫 alloc、init 之后回传的结果只会是 nil。

转载于:https://www.cnblogs.com/KingQiangzi/p/3272848.html

使用CoreTelephony获得SIM卡网络运营商名称相关推荐

  1. [Swift]获取手机SIM卡网络运营商名称

    导入框架 import CoreTelephony 获取当前运营商名称 /// 获取手机SIM卡网络运营商名称 func currentCarrierName() -> String? {var ...

  2. iPhone使用CoreTelephony获得SIM卡网络运营商资讯和通话资料

    注意要加头文件目录 /System/Library/Frameworks/CoreTelephony.framework/Headers 到 build 设置 Header Search Paths, ...

  3. Android之获取移动网络运营商名称

    原来的获取方法不好用了,适配安卓10.0设备,最新获取移动网络运营商名称方法. 获取权限: android.permission.READ_PHONE_STATE 工具类代码: /*** Create ...

  4. android 网络运营商名称显示规则(锁屏界面,下拉列表)

    一:Background & 相关flow MTK Operator name display在手机中分成两种类型: 1. Sim卡名称: 根据开机从SIM卡中读取的IMSI去到Spn-con ...

  5. 网络运营商名称显示amp;SIM名称显示

    一 网络名称显示这部分比較复杂.Spec对这也有明白的规定,依据其优先级由高往低介绍(其优先级參考TS 22.101), 1.       Enhanced Operator Name String. ...

  6. 网络运营商名称显示SIM名称显示

    一 网络名称显示这部分比较复杂,Spec对这也有明确的规定,根据其优先级由高往低介绍(其优先级参考TS 22.101), 1.       Enhanced Operator Name String, ...

  7. android检测sim卡状态,android判断手机SIM状态

    释放双眼,带上耳机,听听看~! public String readSIMCard() { TelephonyManager tm = (TelephonyManager)this.getSystem ...

  8. android sim 卡双卡双待

    转载自http://blog.csdn.net/hellolinshoujie/article/details/7790566 Moto XT800(双卡手机)短信和电话服务的总结 分类: Andro ...

  9. Service之电话管理器之获取网络和SIM卡信息

    TelephonyManager是一个管理手机通话状态,电话网络信息的服务类,提供了大量的getXxx()方法来获取电话网络的相关信息. 实例:获取网络和SIM卡信息 主界面文件包含一个ListVie ...

  10. Android SIM卡识别加载流程

    文章目录 总述 代码路径 UICC框架 SIM卡识别加载流程 日志分析举例 总述 本文基于Android N(Android 7) 首先要知道SIM卡一般是挂载在CP侧(MODEM侧)的,由MODEM ...

最新文章

  1. Swift--逃逸闭包与非逃逸闭包(Swift3.1)
  2. 2020年6月学术会议变动汇总
  3. 第十届四川省大学生程序设计竞赛
  4. 手把手带你领略双十一背后的核心组件Sentinel之流控规则
  5. 改造Cobol项目应该注意的几个问题
  6. 【C++】 C++标准模板库(六) Queue
  7. c#winform演练 ktv项目 MediaPlayer控件播放音乐
  8. 普通办公用计算机,工业计算机与普通办公用的电脑有什么区别?
  9. uos/deepin设置屏幕缩放比例的命令
  10. 解决用wps另存dbf格式文件,丢失只转换了部分数据
  11. 深度学习技术在遥感中应用的综述
  12. creo视图管理器使用方法_5.3 视图管理-样式、截面
  13. Connect Four四子棋c++程序 - 显示窗口(0)
  14. 禾穗HERS | 听说妳事业成功都是靠“关系”?
  15. backdrop-filter
  16. 使用电脑微信扫描二维码
  17. 领导说“辛苦了”,怎么回才显情商高
  18. ios11修改微信步数_你会时常去看他的微信步数吗?
  19. Python 玫瑰花绘制
  20. 概念区别 【编译型语言与解释型语言、动态类型语言与静态类型语言、强类型语言与弱类型语言】

热门文章

  1. [转] WPF TextBox控件中文字实现垂直居中
  2. RH4 构建ORACLE ASM
  3. PS 基础教程,调整图像品质「1」如何调整亮度和对比度?
  4. Fusion Studio 17 for Mac(视频后期特效合成软件)
  5. 多语言在线翻译工具Translatium for Mac
  6. recyclerview简单实现单选多选反选全选
  7. zabbix监控业务进程变动
  8. ASP.NET MVC:WebViewPage.cs
  9. XSS漏洞的渗透利用另类玩法
  10. 【emWin】例程十:bmp图片显示