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

今天接到一個監(jiān)聽狀態(tài)的需求,當使用 App 時若電話介入需要對當前狀態(tài)進行監(jiān)聽操作(注:并非通話內(nèi)容),根據(jù)不同的狀態(tài)實行相關(guān)的需求操作,廢話不多說步驟如下.

首先,常規(guī)操作先引用對應(yīng)的頭文件,來為后續(xù)功能鋪路.

#import <CoreTelephony/CTCallCenter.h>

#import <CoreTelephony/CTCall.h>


其次,需要設(shè)置一個全局的屬性,若在 viewDidLoad 方法中創(chuàng)建該屬性的話, viewDidLoad 調(diào)用結(jié)束該創(chuàng)建的屬性就會被銷毀掉,則后續(xù)方法步驟都將失效,從而無法檢測到來點狀態(tài).

/** 呼叫中心*/

@property (nonatomic, strong) CTCallCenter *callCenter;


再其次,便是具體監(jiān)聽邏輯,code 如下.

#pragma mark - ************************************************ (監(jiān)聽電話相關(guān))

/**

?監(jiān)聽電話介入

?*/

- (void)monitorTelephoneCall {

? ? kWeakSelf(self);


? ? // MsgAppStarting

? ? // MsgAppReactivate

? ? _callCenter = [[CTCallCenter alloc] init];

? ? _callCenter.callEventHandler = ^(CTCall * call) {

? ? ? ? if ([call.callState isEqualToString:CTCallStateDisconnected]) {// Call has been disconnected

? ? ? ? ? ? NSLog(@"電話 --- 斷開連接");

? ? ? ? }

? ? ? ? else if ([call.callState isEqualToString:CTCallStateConnected]) {// Call has just been connected

? ? ? ? ? ? NSLog(@"電話 --- 接通");

? ? ? ? ? ? // 通知 H5 當前截屏操作

? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{

? ? ? ? ? ? ? ? // do somethings

? ? ? ? ? ? });


? ? ? ? }

? ? ? ? else if ([call.callState isEqualToString:CTCallStateIncoming]) {// Call is incoming

? ? ? ? ? ? NSLog(@"電話 --- 待接通");

? ? ? ? }

? ? ? ? else if ([call.callState isEqualToString:CTCallStateDialing]) {// Call is Dialing

? ? ? ? ? ? NSLog(@"電話 --- 撥號中");

? ? ? ? ? ? // 通知 H5 當前截屏操作

? ? ? ? ? ? dispatch_async(dispatch_get_main_queue(), ^{

? ? ? ? ? ? ? ? // do somethings

? ? ? ? ? ? });


? ? ? ? }

? ? ? ? else {// Nothing is done"

? ? ? ? ? ? NSLog(@"電話 --- 無操作");

? ? ? ? }

? ? };

}

注:若需要對 UI 方面進行調(diào)試,需要提前進行主線程的調(diào)度,不然會造成 crash.


此次分享到此結(jié)束,希望內(nèi)容能對大家實際有所幫助,有什么不足之處歡迎指點共同進步!

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

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

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時...
    歐辰_OSR閱讀 30,217評論 8 265
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,116評論 0 12
  • 最全的iOS面試題及答案 iOS面試小貼士 ———————————————回答好下面的足夠了-----------...
    大羅Rnthking閱讀 1,042評論 0 2
  • 曾經(jīng)看過一個關(guān)于“最難讀下去的書”的榜單,《百年孤獨》赫然其上,且名列前茅。復(fù)雜重疊的人物名字,紛繁交錯的人物關(guān)系...
    理性沉淀閱讀 522評論 0 1

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