前言
前文写了一篇关于CallKit的SDK替换的文章,当时因为考虑不周,替换之后发现该SDK国内禁止使用,无法上架,于是换回了原先的SDK,目前已上架,各位看官可以放心使用。
正文
导入库
#import <CoreTelephony/CTCall.h>
#import <CoreTelephony/CTCallCenter.h>
应用
为了方便在不同的地方使用,建议使用全局变量的形式初始化,然后使用如下核心代码进行逻辑处理
// 初始化
@property (strong, nonatomic) CTCallCenter * callCenter;
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler = ^(CTCall *call) {
@strongify(self);
if ([call.callState isEqualToString:CTCallStateDisconnected]) {
dispatch_async(dispatch_get_main_queue(), ^{
@strongify(self);
//断开电话需要进行的操作
};
} else if([call.callState isEqualToString:CTCallStateIncoming]) {
dispatch_async(dispatch_get_main_queue(), ^{
@strongify(self);
//来电时需要进行的操作
};
} else {
DLog(@"未知");
}
};
扩展
对于当前项目来说,用到的只有两种情况,系统提供了四种情况可以判别,需要的可以自行在需要的场景中尝试
CTCallStateDialing
CTCallStateIncoming
CTCallStateConnected
CTCallStateDisconnected
尾声
以上就是iOS中对于电话接听与挂断监听的方法,实际并没有很难的内容,这次吸取了一个很严重的问题,就是任何事情在实际应用之前一定要进行充分的调研之后再做决策,不然就会出现不可预测的问题,导致浪费时间,并做了相对无用的工作。