监听iPhone的通话状态之---CoreTelephony.framework

近期在做一个网络电话会议,需要判断手机的通话状态,通过在网上查找资料找到一个苹果私有框架,下面简单介绍如何使用:

1,要在项目中添加CoreTelephony.framework这个框架,怎么添加如下图:

点击“+”,添加即可;

2,在你需要用到该功能的class中,导入如下两个头文件

#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCall.h>

3,使用代码如下:

    CTCallCenter *center = [[CTCallCenter alloc] init];
    center.callEventHandler = ^(CTCall *call){
        //block回调
        NSLog(@"----->>>>Call State : %@",[call description]);
        
        if (call.callState == CTCallStateDisconnected){
            NSLog(@"Call has been disconnected---挂断"); 
        }else if (call.callState == CTCallStateConnected){
            NSLog(@"Call has just been connected---通话中");
        }else if(call.callState == CTCallStateIncoming){
            NSLog(@"Call is incoming---来电中(未接起)");
        }else if (call.callState ==CTCallStateDialing){
            NSLog(@"call is dialing");
        }else{
            NSLog(@"Nothing is done");
        }
        
    };
进行初始化完后,就可以测试啦。给被测试的手机打电话,就会执行^(CTCall *call)回调中的代码,通过[call description]可以看出手机通话的各种状态。

特别注意,这是iOS的私有API,不能上线AppStore会被拒;而且在项目中定义全局属性变量(@property (nonatomic,retain)CTCallCenter * center;)编译也不会通过!!!!

希望对大家有用,哈哈哈!

原文地址:https://www.cnblogs.com/pangbin/p/5425049.html