IOS 系统打电话事件的监听与状态获取

我们可以调用iOS提供的接口拨打电话:

  NSString *tel = @"telprompt://";
        NSString * number = [tel stringByAppendingString:phoneNubmer];
        NSURL * telURL = [NSURL URLWithString: number];
        [_callView loadRequest:[NSURLRequest requestWithURL:telURL]];
        [self.view addSubview:_callView];


调用之后会弹出iOS的alert,询问是否要拨号,那么我们怎么知道用户是点击了哪个选项呢,可以使用电话事件监听的包和方法:

导入CoreTelephony.framework,

@property (nonatomicstrongCTCallCenter *center;

这个一定要声明为属性,如果在某个函数中做声明的话,ARC就会自动在函数执行结束的时候将其释放掉。

_center = [[CTCallCenter alloc] init];
        _center.callEventHandler = ^(CTCall *call) {
            if ([call.callState isEqualToString:@"CTCallStateDialing"]) {
                。。。
            }
        };


call.callState 这个属性记录了电话操作的状态,具体都有哪些值可以通过头文件得知。



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

@property (nonatomic, strong) CTCallCenter *callCenter;

CTCallCenter *callCenter = [[CTCallCenter alloc] init];
    callCenter.callEventHandler = ^(CTCall* call) {
        if ([call.callState isEqualToString:CTCallStateDisconnected])
        {
            NSLog(@"挂断了电话咯Call has been disconnected");
        }
        else if ([call.callState isEqualToString:CTCallStateConnected])
        {
            NSLog(@"电话通了Call has just been connected");
        }
        else if([call.callState isEqualToString:CTCallStateIncoming])
        {
            NSLog(@"来电话了Call is incoming");

        }
        else if ([call.callState isEqualToString:CTCallStateDialing])
        {
            NSLog(@"正在播出电话call is dialing");
        }
        else  
        {  
            NSLog(@"嘛都没做Nothing is done");
        }  
    };


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值