Core Telephony
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相关推荐
- Core Telephony Framework
Core Telephony Framework(核心通讯框架) 概述: 这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使 ...
- Core Services层
本文转载至 http://jingyan.baidu.com/article/cdddd41c57360853cb00e124.html Core Services层是系统很多部分的基础部分,也许应用 ...
- iOS - OC iOS 开发体系
1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...
- iOS之深入解析操作系统的架构
一.iOS 系统架构层次 在 iOS 中,框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其它资源.共享资源库定义应用程序可以调用的函数和方法. iOS 为 ...
- iOS CoreTelephony框架介绍与使用案列
昨晚看一篇文章时看到了私有API这个词,貌似开发者对私有API的使用很反感于是果断百度谷歌,以下是Stackoverflow中关于Private Frameworks的一个解释: Private fr ...
- iPhone使用CoreTelephony获得SIM卡网络运营商资讯和通话资料
注意要加头文件目录 /System/Library/Frameworks/CoreTelephony.framework/Headers 到 build 设置 Header Search Paths, ...
- Apple现行公开的framework简介
文章目录 App Framework(11) AppKit Bundle Resources Foundation Swift SwiftUI TVML TVMLKit TVMLKit JS TVUI ...
- iOS总体框架介绍和详尽说明
总体介绍 iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层).MediaLayer(媒体层).Cor ...
- iOS 常用框架介绍
iOS框架介绍 Cocoa Touch GameKit 实现对游戏中心的支持,让用户能够在线共享他们的游戏相关的信息 iOS设备之间蓝牙数据传输 从iOS7开始过期 局域网游戏 ...
最新文章
- FPGA/ASIC初学者应该学习Verilog还是VHDL?
- 【深度学习】图像自动处理工具SimpleITK的使用(Python)
- JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
- web.xml 中的listener、 filter、servlet 加载顺序
- 七、操作系统——动态分区分配算法(详解)
- 霍金的遗愿清单:离开地球,警惕人工智能
- python list中append()与extend()用法
- SQL Server 网络协议和 TDS 端点
- 【Oracle】三种方式查看SQL语句的执行计划
- linux下用套接字抓arp包,TCP抓包-linux
- 服务器SSH 22端口关闭
- 魅族 计算机 隐藏,不知道你们发现了么,魅族Flyme6 超好用的隐藏功能
- 通俗的解释机器学习的预测原理
- su联合推拉使用方法_12个最实用的SU建模技巧
- logstash: Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread “
- 基于人工智能(AI)的蛋白结构预测工具合集
- 量子退火Python实战(2):护士调度问题(NSP : Nurse Scheduling Problem)
- excel删除重复值的办法
- android实现打电话功能,Android之简单实现拨打电话功能的方法
- 自定义组件的behaviors笔记