iOS Core Telephony Framework
Core Telephony Framework(核心通讯框架)
概述:
这个库的前缀为CT(Core Telephony),主要用来获得用户通讯相关信息,我们可以使用这些信息来定义外部接口以便自己使用。当然我们也可以仅仅是用此信息来获得当前正在通话的信息。
CT的对象可以获得通讯信息,例如可以利用此进行网络电话(VoIP — Voice over Internet Protocol)。而又如CTCall可以帮助我们获得很多当前通话的信息,包括一个唯一码和一个状态值——呼叫(dialing)、呼入 (incoming)、通话(connected)、挂断(disconnected)。
包含以下类型:
CTCall,CTCallCenter,CTCarrier,CTTelephonyNetworkInfo
下面是各对象的详细介绍
CTCall Class
继承自: NSObject
版本支持:iOS 4.0及以上版本
声明于: CTCall.h
概述: CTCall 是对通话信息的一个封装(别想多了,少的可怜的信息而已…)。
包含属性:callID、callState
@property (nonatomic, readonly, retain) NSString *callID
用来标识一个手机通话(唯一),以区分多个正在激活的通话(例如挂起的通话与正在通话)。
@property (nonatomic, readonly, retain) NSString *callState
用来标识通话状态。下面是用于标识的四种状态:
extern NSString const *CTCallStateDialing; extern NSString const *CTCallStateIncoming; extern NSString const *CTCallStateConnected; extern NSString const *CTCallStateDisconnected;
一个通话最初的状态为呼入(CTCallStateIncoming)和呼出(CTCallStateDialing),当接通后状态转变为接通 (CTCallStateConnected),而当通话终止时状态转变为挂断(CTCallStateDisconnected)
CTCallCenter Class
继承自: NSObject
版本支持:iOS 4.0及以上版本
声明于: CTCallCenter.h
概述: CTCallCenter 作用于通话状态改变时,此时他将回调指定的事件。
包含属性:callEventHandle,currentCalls
@property (nonatomic, copy) void (^callEventHandler)(CTCall*);
通话事件状态转变时进行回调的函数。当我们的程序处于激活状态,则通话状态转变时直接回调我们指定的函数。但是当程序处于挂起状态时(后台),程序 不会立即接到状态转变的回调,直到重新变为激活状态。当又挂起转为激活时,程序只能收到每个通话事件最后的转变状态。例如,我们的程序在通话创建后(并未 连接)就由激活转变为挂起状态了,而之后此通话先后转变为通话、挂断。当我们的程序重新激活后,我们将收到此电话的挂断消息回调。这个就是官方文档中所谓 的Single call event。
简单的使用方法如下:
CTCallCenter *center = [[CTCallCenter alloc] init]; center.callEventHandler = ^(CTCall *call) { NSLog(@"call:%@", call.callState); } @property (readonly, retain) NSSet *currentCalls
一个当前进程中所有通话的容器。
CTCarrier Class
继承自: NSObject
版本支持:iOS 4.0及以上版本
声明于: CTCarrier.h
概述: CTCarrier 是对电信运营商信息的一个封装
包含属性:allowsVOIP,carrierName,isoCountryCode,mobileCountryCode,mobileNetworkCode
@property (nonatomic, readonly, assign) BOOL allowsVOIP
用以标识电信运营商是否支持网络电话(VOIP),而在以下三种情况下这个值将为nil。
1、设备处于飞行模式
2、检测不到SIM卡
3、无电信信号
@property (nonatomic, readonly, retain) NSString *carrierName
电信运营商的名字,除非没有插入过SIM卡,否则这个值将是当前SIM卡或上一SIM卡(当前设备内无SIM卡)电信运营商的名字。
@property (nonatomic, readonly, retain) NSString *isoCountryCode
使用ISO 3166-1标准的国家码标识电信运营商的所属国家。处于nil值状态的情况同allowsVOIP。
@property (nonatomic, readonly, retain) NSString *mobileCountryCode
记录移动国家码(MMC),由三位数字组成,唯一地识别移动用户所属的国家,我国为460。值得注意的是这个属性的类型是NSString而非数值。
@property (nonatomic, readonly, retain) NSString *mobileNetworkCode
记录移动网络码(MNC)由两位数字组成,用于识别移动用户所归属的移动网。中国移动TD系统使用00,中国联通GSM系统使用01,中国移动GSM系统使用02,中国电信CDMA系统使用03。
CTTelephonyNetworkInfo Class
继承自: NSObject
版本支持:iOS 4.0及以上版本
声明于: CTTelephonyNetworkInfo.h
概述: CTTelephonyNetworkInfo 主要用于更换SIM卡时电信运营商信息的获取
包含属性:subscriberCellularProvider,subscriberCellularProviderDidUpdateNotifier
@property(readonly, retain) CTCarrier *subscriberCellularProvider
一个CTCarrier对象,具体包含内容参考CTCarrier Class。
@property(nonatomic, copy) void (^subscriberCellularProviderDidUpdateNotifier)(CTCarrier*);
当电信运营商改变时进行回调的接口。
简单的使用方法如下:
CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = info.subscriberCellularProvider; NSLog(@"carrier:%@", [carrier description]); info.subscriberCellularProviderDidUpdateNotifier = ^(CTCarrier *carrier) { NSLog(@"carrier:%@", [carrier description]); }
原文连接:http://blog.163.com/china_uv/blog/static/11713726720126725415858/
iOS Core Telephony Framework的更多相关文章
- iOS开发之集成iOS9中的Core Spotlight Framework搜索App的内容
Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotlight.集成Spotlight的 ...
- IOS Core Animation Advanced Techniques的学习笔记(一)
转载. Book Description Publication Date: August 12, 2013 Core Animation is the technology underlying A ...
- iOS Core Animation Advanced Techniques
Book Descripter Core Animation is the technology underlying Apple's iOS user interface. By unleashin ...
- Unity3D研究院之IOS全自动编辑framework、plist、oc代码
Unity打IOS时会先生成一个Xcode工程,如果你需要增加一些第三方的framework那么需要手动一条一条的添加,这太烦了..而且可能你还需要修改Plist文件,甚至还可能要修改unity自动生 ...
- iOS - Core Animation 核心动画
1.UIView 动画 具体讲解见 iOS - UIView 动画 2.UIImageView 动画 具体讲解见 iOS - UIImageView 动画 3.CADisplayLink 定时器 具体 ...
- iOS Core Animation 简明系列教程
iOS Core Animation 简明系列教程 看到无数的CA教程,都非常的难懂,各种事务各种图层关系看的人头大.自己就想用通俗的语言翻译给大家听,尽可能准确表达,如果哪里有问题,请您指出我会尽 ...
- Core Location Framework学习
在Apple开发中,尤其是移动设备开发,经常会使用Core Location Framework,这个框架可以使得iOS设备获取当前的地理位置.本文就具体到Core Location 框架中,查看其声 ...
- iOS使用Security.framework进行RSA 加密解密签名和验证签名
iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...
- 转 iOS Core Animation 动画 入门学习(一)基础
iOS Core Animation 动画 入门学习(一)基础 reference:https://developer.apple.com/library/ios/documentation/Coco ...
随机推荐
- 初学MFC
学习使用MFC搭建界面.尝试使用MFC搭建了一个简单的基于对话框的计算器界面,包括模态对话框.非模态对话框.向导对话框等. // MFCApplicationAddDlg.h : 头文件 // #pr ...
- jQuery Dialog弹出层对话框插件
Dialog.js的相关注释已经添加,可以按照注释,进行相关样式的修改,适用于自定义的各个系统! dialog.js /** * jQuery的Dialog插件. * * @param object ...
- 学习Linux第六天
1.Shell编程 bash变量: 都是以字符串格式存储 x=5 等号左右不能有空格,会当作命令处理 如何调用: echo $x 此法无法进行数值运算,不存在的变量输出空 set -u 设置变量报错 ...
- css图片切换效果分析+翻译整理
Demos:http://tympanus.net/Tutorials/CSS3SlidingImagePanels/ 出处:http://tympanus.net/codrops/2012/01/1 ...
- HDU 5151 Sit sit sit 区间dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5151 题解: 有n个椅子,编号为1到n. 现在有n个同学,编号为1到n,从第一个同学开始选择要坐的位 ...
- 编译器手工开栈(hdu可以其他可以尝试)
做题的时候经常遇到深度递归的,当然也可以改成非递归形式.如果写成递归形式会爆栈,所以可以用手工扩展栈. C++ (一般用C++提交,所以就推荐这种了) #pragma comment(linker, ...
- 【VS2012】项目文件夹管理
项目中添加文件夹 " 项目"显示所有文件 在"显示所有文件"的情况下,可以创建文件件 "新建文件夹"需要添加到物理路径中时,可以选择&quo ...
- 缓存应用--Memcached分布式缓存简介
一. 什么是Memcached Memcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态. ...
- android 关于Location of the Android SDK has not been setup in the preferences的解决方法
今天在部署android开发环境的时候,每次打开eclipse的时候点击AVD Manager的按钮就会弹出Location of the Android SDK has not been setup ...
- POJ 2923 Relocation (状态压缩,01背包)
题意:有n个(n<=10)物品,两辆车,装载量为c1和c2,每次两辆车可以运一些物品,一起走.但每辆车物品的总重量不能超过该车的容量.问最少要几次运完. 思路:由于n较小,可以用状态压缩来求解. ...