• 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/
  • 相关阅读:
    蚂蚁森林自动收能量
    え速记
    い 速记
    あ速记
    五十音图
    Leetcode 215. 数组中的第K个最大元素 排序 优先队列
    动手学深度学习 | 第二部分完结竞赛:图片分类 | 29
    动手学深度学习 | 残差网络 ResNet | 27
    动手学深度学习 | 批量归一化 | 26
    动手学深度学习 | 含并行连结的网络GoogLeNet/Inception V3 | 25
  • 原文地址:https://www.cnblogs.com/wfwenchao/p/3956415.html
Copyright © 2020-2023  润新知