Core Telephony

iOS 4.0 的官方 API 裡頭,多了一個叫做 Core Telephony 的 framework;一直以來 Core Telephony 都是 private API,現在開放出來,但是從文件來看,裡頭根本沒有幾行,既沒有告訴你應該怎麼用,也沒有範例,你從 framework 裡頭寥寥四個 class 的 header 中,也搞不清楚,究竟可以把這個東西用在什麼用途上。

目前只知道可以拿來做兩件事情:1. 知道目前你這隻 iPhone 用的是哪個電信商的服務;2. 知道現在 iPhone 是不是在打電話。

※ 電信商資訊

用 CTTelephonyNetworkInfo 與 CTCarrier 這兩個 class,就可以取得電信商資訊,例如:

1 CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
2 CTCarrier *carrier = info.subscriberCellularProvider;
3 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 進去,像是:

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

如此一來,當你的 iPhone 漫遊到了其他網路的時候,就會執行你這段 block,但光是知道手機現在漫遊在哪個電信商的網路裡頭,大概能做的,就是一些跟電信商關係密切的服務之類,你或許可以決定軟體裡頭有哪些功能,一定要在某個電信商的網路才能用;電信商自己做 iPhone 軟體的時候大概會想做這種事情。

※ 通話資料

用 CTCallCenter 與 CTCall 這兩個 class,便可以知道目前 iPhone 是否在通話中。CTCallCenter 的用途是用來監控是不是有電話打進來、正在接聽、或是已經掛斷,而 CTCall 則是將每一則通話事件包裝成一個物件。我們先寫一小段程式-

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

然後,在實機上執行,接著打通電話到這支 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。

Core Telephony相关推荐

  1. Core Telephony Framework

    Core Telephony Framework(核心通讯框架) 概述: 这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使 ...

  2. Core Services层

    本文转载至 http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.html Core Services层是系统很多部分的基础部分,也许应用 ...

  3. iOS - OC iOS 开发体系

    1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...

  4. iOS之深入解析操作系统的架构

    一.iOS 系统架构层次 在 iOS 中,框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其它资源.共享资源库定义应用程序可以调用的函数和方法. iOS 为 ...

  5. iOS CoreTelephony框架介绍与使用案列

    昨晚看一篇文章时看到了私有API这个词,貌似开发者对私有API的使用很反感于是果断百度谷歌,以下是Stackoverflow中关于Private Frameworks的一个解释: Private fr ...

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

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

  7. Apple现行公开的framework简介

    文章目录 App Framework(11) AppKit Bundle Resources Foundation Swift SwiftUI TVML TVMLKit TVMLKit JS TVUI ...

  8. iOS总体框架介绍和详尽说明

    总体介绍 iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层).MediaLayer(媒体层).Cor ...

  9. iOS 常用框架介绍

    iOS框架介绍      Cocoa Touch GameKit  实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息  iOS设备之间蓝牙数据传输   从iOS7开始过期   局域网游戏 ...

最新文章

  1. FPGA/ASIC初学者应该学习Verilog还是VHDL?
  2. 【深度学习】图像自动处理工具SimpleITK的使用(Python)
  3. JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
  4. web.xml 中的listener、 filter、servlet 加载顺序
  5. 七、操作系统——动态分区分配算法(详解)
  6. 霍金的遗愿清单:离开地球,警惕人工智能
  7. python list中append()与extend()用法
  8. SQL Server 网络协议和 TDS 端点
  9. 【Oracle】三种方式查看SQL语句的执行计划
  10. linux下用套接字抓arp包,TCP抓包-linux
  11. 服务器SSH 22端口关闭
  12. 魅族 计算机 隐藏,不知道你们发现了么,魅族Flyme6 超好用的隐藏功能
  13. 通俗的解释机器学习的预测原理
  14. su联合推拉使用方法_12个最实用的SU建模技巧
  15. logstash: Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread “
  16. 基于人工智能(AI)的蛋白结构预测工具合集
  17. 量子退火Python实战(2):护士调度问题(NSP : Nurse Scheduling Problem)
  18. excel删除重复值的办法
  19. android实现打电话功能,Android之简单实现拨打电话功能的方法
  20. 自定义组件的behaviors笔记

热门文章

  1. linux 中的.so和.a文件
  2. 华科再次拿下华为“天才少年”最高薪!201万给到通信应届博士生
  3. 部署 docker 容器虚拟化平台
  4. ubuntu常用的服务器搭建
  5. 超级详细的计数问题的解法
  6. Kinect动作捕捉的改进
  7. LM334芯片到底是恒流源还是温度传感器?
  8. Java培训机构靠不靠谱?能不能学会?
  9. 爬虫实战 | 手把手用Python教你采集可视化知乎问题的回答(内附代码)
  10. Java 类加载顺序与成员变量初始化