iOS監聽電話來電、掛斷、撥號等


以下,來講解在app內如何調用打電話功能和監聽電話來電、掛斷、撥號等功能。

簡單的UI布局:

首先,先實現撥打電話的功能,以便於后續測試:

// 撥打電話
- (IBAction)dialingButtonClick:(UIButton *)sender {
    NSURL *url = [NSURL URLWithString:@"tel:138xxxxxxxx"];// 填入有效電話號碼
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    UIWebView * callWebview = [[UIWebView alloc] init];
    [callWebview loadRequest:request];
    [self.view addSubview:callWebview];
}

然后,監聽電話,首先需要我們導入一個框架並引入頭文件:

// 導入框架 CoreTelephony.framework
#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCall.h>

監測電話:

// 監測電話
- (void)monitorCall {
    self.callCenter.callEventHandler = ^(CTCall* call) {
        if (call.callState == CTCallStateDisconnected) {
            NSLog(@"電話結束或掛斷電話");
        } else if (call.callState == CTCallStateConnected){
            NSLog(@"電話接通");
        } else if(call.callState == CTCallStateIncoming) {
            NSLog(@"來電話");
        } else if (call.callState ==CTCallStateDialing) {
            NSLog(@"撥號打電話(在應用內調用打電話功能)");
        }
    };
}

#pragma mark - getter Methods

- (CTCallCenter *)callCenter {
    if (!_callCenter) {
        _callCenter = [[CTCallCenter alloc] init];
    }
    return _callCenter;
}

// 注:值得說明的是,CTCallCenter 呼叫中心必須強引用,防止對象被釋放掉而無法監測電話。

 

場景:

1、點擊按鈕,撥號時:

2016-06-08 16:38:14.334 Demo_監聽電話狀態[5732:1781472] applicationWillResignActive
2016-06-08 16:38:15.520 Demo_監聽電話狀態[5732:1781472] applicationDidBecomeActive
2016-06-08 16:38:15.621 Demo_監聽電話狀態[5732:1784552] 撥號打電話(在應用內調用打電話功能)

2、手機來電,然后掛斷:

2016-06-08 16:40:11.479 Demo_監聽電話狀態[5732:1785743] 來電話
2016-06-08 16:40:11.819 Demo_監聽電話狀態[5732:1781472] applicationWillResignActive
2016-06-08 16:40:13.746 Demo_監聽電話狀態[5732:1785743] 電話結束或掛斷電話
2016-06-08 16:40:15.267 Demo_監聽電話狀態[5732:1781472] applicationDidBecomeActive

3.手機來電,接通,然后掛斷:

2016-06-08 16:42:11.479 Demo_監聽電話狀態[5732:1785743] 來電話
2016-06-08 16:42:11.819 Demo_監聽電話狀態[5732:1781472] applicationWillResignActive
2016-06-08 16:42:11.919 Demo_監聽電話狀態[5732:1785743] 電話接通
2016-06-08 16:42:13.746 Demo_監聽電話狀態[5732:1785743] 電話結束或掛斷電話
2016-06-08 16:42:15.267 Demo_監聽電話狀態[5732:1781472] applicationDidBecomeActive

 

尊重作者勞動成果,轉載請注明: 【kingdev】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM