ios关于手机拨打电话,回调问题

本文介绍在iOS应用中实现电话拨打功能的两种方法:直接拨打电话和通过UIWebView模拟拨号。此外,还详细展示了如何使用CoreTelephony框架监听电话状态的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要导入下面两个头文件,导入CoreTelephony.framework,

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

@interface TelViewController () 

@property (nonatomic, strong) CTCallCenter *callCenter;
@end

以下两种打电话的方式:

1.通常的方法
- (IBAction)phoneAction:(id)sender {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];
}
2.获取回调的方法
- (IBAction)phoneWebAction:(id)sender {
    UIWebView *callWebview =[[UIWebView alloc] init] ;
    NSURL *telURL =[NSURL URLWithString:@"tel://514091"];
    [callWebview loadRequest:[NSURLRequest requestWithURL:telURL]];
    [self.view addSubview:callWebview];
}

处理回调

-(void)detectCall
{
        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");  
            }    
        };  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值