近期在做一個網絡電話會議,需要判斷手機的通話狀態,通過在網上查找資料找到一個蘋果私有框架,下面簡單介紹如何使用:
1,要在項目中添加CoreTelephony.framework這個框架,怎么添加如下圖:

點擊“+”,添加即可;
2,在你需要用到該功能的class中,導入如下兩個頭文件
#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCall.h>
3,使用代碼如下:
CTCallCenter *center = [[CTCallCenter alloc] init];
center.callEventHandler = ^(CTCall *call){
//block回調
NSLog(@"----->>>>Call State : %@",[call description]);
if (call.callState == CTCallStateDisconnected){
NSLog(@"Call has been disconnected---掛斷");
}else if (call.callState == CTCallStateConnected){
NSLog(@"Call has just been connected---通話中");
}else if(call.callState == CTCallStateIncoming){
NSLog(@"Call is incoming---來電中(未接起)");
}else if (call.callState ==CTCallStateDialing){
NSLog(@"call is dialing");
}else{
NSLog(@"Nothing is done");
}
};
進行初始化完后,就可以測試啦。給被測試的手機打電話,就會執行^(CTCall *call)回調中的代碼,通過[call description]可以看出手機通話的各種狀態。
特別注意,這是iOS的私有API,不能上線AppStore會被拒;而且在項目中定義全局屬性變量(@property (nonatomic,retain)CTCallCenter * center;)編譯也不會通過!!!!
希望對大家有用,哈哈哈!
