iOS電話狀態(tài)監(jiān)聽

一、iOS10之前

iOS10之前使用CoreTelephony中的CTCallCenter和CTCall。

1、導(dǎo)入:

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

2、使用:

self.callCenter = [CTCallCenter new];
    
    __weak ViewController *weakSelf = self;
    self.callCenter.callEventHandler = ^(CTCall *call) {
        dispatch_async(dispatch_get_main_queue(), ^{
            if ([call.callState isEqualToString:CTCallStateDialing]) {
                NSLog(@"電話主動撥打電話");
            } else if ([call.callState isEqualToString:CTCallStateConnected]) {
                NSLog(@"電話接通");
                weakSelf.startDate = [NSDate date];
            } else if ([call.callState isEqualToString:CTCallStateDisconnected]) {
                NSLog(@"電話掛斷");
                weakSelf.endDate = [NSDate date];
                [weakSelf called];
            } else if ([call.callState isEqualToString:CTCallStateIncoming]) {
                NSLog(@"電話被叫");
            } else {
                NSLog(@"電話其他狀態(tài)");
            }
        });
    };

二、iOS10之后

iOS10及之后使用Callkit中的CXCallObserver和CXCall

1、導(dǎo)入:

#import <CallKit/CXCallObserver.h>
#import <CallKit/CXCall.h>

2、使用:

a、設(shè)置代理

self.callObserver = [CXCallObserver new];
    [self.callObserver setDelegate:self queue:dispatch_get_main_queue()];

b、實(shí)現(xiàn)協(xié)議CXCallObserverDelegate方法

//MARK: CXCallObserverDelegate
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call {

    NSLog(@"outgoing :%d  onHold :%d   hasConnected :%d   hasEnded :%d",call.outgoing,call.onHold,call.hasConnected,call.hasEnded);
    /*
     撥打:  outgoing :1  onHold :0   hasConnected :0   hasEnded :0
     拒絕:  outgoing :1  onHold :0   hasConnected :0   hasEnded :1
     鏈接:  outgoing :1  onHold :0   hasConnected :1   hasEnded :0
     掛斷:  outgoing :1  onHold :0   hasConnected :1   hasEnded :1
     對方未接聽時掛斷:  outgoing :1  onHold :0   hasConnected :0   hasEnded :1
     
     新來電話:    outgoing :0  onHold :0   hasConnected :0   hasEnded :0
     保留并接聽:  outgoing :1  onHold :1   hasConnected :1   hasEnded :0
     另一個掛掉:  outgoing :0  onHold :0   hasConnected :1   hasEnded :0
     保持鏈接:    outgoing :1  onHold :0   hasConnected :1   hasEnded :1
     對方掛掉:    outgoing :0  onHold :0   hasConnected :1   hasEnded :1
     */
}

參考:http://m.itdecent.cn/p/e27b1a609c1a

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • App電話狀態(tài)監(jiān)聽 一般這種獲取系統(tǒng)狀態(tài)變化的代碼都是寫在AppDelegate里面,在didFinishLaun...
    iLeooooo閱讀 709評論 0 0
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,844評論 6 427
  • 前言 RxSwift的魅力想必用過的人都有心得體會,簡直就是從入門到想放棄,從想放棄到愛不釋手的過程。但是RxSw...
    Mr杰杰閱讀 4,495評論 6 7
  • 今天朋友圈和微博都被高考的字眼刷屏了,當(dāng)然,考生是沒時間發(fā)朋友圈的,發(fā)評論的都是高考已經(jīng)于他無關(guān)痛癢的人。不論是考...
    焦糖爆米花閱讀 392評論 0 0
  • 杜康美酒思泉涌、清池墨染琥珀香 抽刀排浪浪不止、欲錯花開花又來 執(zhí)手滄海光破云、把酒嘲天是我聞 劍上雕鏤韌孤魄、鼎...
    淺夏崇魂閱讀 286評論 0 0

友情鏈接更多精彩內(nèi)容