先導入這兩個頭文件,庫文件不用導能夠app
#import <CoreTelephony/CTCallCenter.h>ui
#import <CoreTelephony/CTCall.h>this
//申明電話類屬性,必須申明成成品屬性,否則沒效果;atom
@property(nonatomic,strong)CTCallCenter *callCenter;it
//以下兩個方法中監聽:io
- (void)applicationWillResignActive:(UIApplication *)application {import
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.sed
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.date
self.callCenter = [[CTCallCenter alloc] init];transition
self.callCenter.callEventHandler=^(CTCall* call)
{
if (call.callState == CTCallStateDisconnected)
{
NSLog(@"-applicationWillResignActive----掛斷"); //掛斷
// self.viewController.signalStatus=YES;
}
else if (call.callState == CTCallStateConnected)
{
NSLog(@"--applicationWillResignActive---連通了"); //聯通了
}
else if(call.callState == CTCallStateIncoming)
{
NSLog(@"applicationWillResignActive Call is incoming");
//self.viewController.signalStatus=NO;
}
else if (call.callState ==CTCallStateDialing)
{
NSLog(@"--applicationWillResignActive----撥號"); //撥號
}
else
{
NSLog(@"applicationWillResignActive Nothing is done?");
}
};
NSLog(@"applicationWillResignActive:%@",application);
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
self.callCenter = [[CTCallCenter alloc] init];
self.callCenter.callEventHandler=^(CTCall* call)
{
if (call.callState == CTCallStateDisconnected)
{
NSLog(@"-applicationDidBecomeActive----掛斷"); //掛斷
// self.viewController.signalStatus=YES;
}
else if (call.callState == CTCallStateConnected)
{
NSLog(@"--applicationDidBecomeActive---連通了"); //聯通了
}
else if(call.callState == CTCallStateIncoming)
{
NSLog(@"applicationDidBecomeActive Call is incoming");
//self.viewController.signalStatus=NO;
}
else if (call.callState ==CTCallStateDialing)
{
NSLog(@"--applicationDidBecomeActive----撥號"); //撥號
}
else
{
NSLog(@"applicationDidBecomeActive Nothing is done?");
}
};
NSLog(@"applicationDidBecomeActive:%@",application);
}
//結合上面的打印順序,app方法的調用順序以下:
//來電時> applicationDidBecomeActive Call is incoming > applicationWillResignActive:
//掛斷> applicationWillResignActive----掛斷 > applicationDidBecomeActive:<UIApplication: 0x137609010>
//機主接聽> --applicationWillResignActive---連通了
//通話結束> -applicationWillResignActive----掛斷 > applicationDidBecomeActive:<UIApplication: 0x137609010>