Core Telephony Framework をつかえばできるようです。
#import "TELMainViewController.h" #import <CoreTelephony/CTCall.h> #import <CoreTelephony/CTCallCenter.h> @interface TELMainViewController () @end @implementation TELMainViewController { CTCallCenter *_callCenter; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. _callCenter = [[CTCallCenter alloc] init]; _callCenter.callEventHandler = ^(CTCall* call) { NSString* callState = [call callState]; if (callState == CTCallStateIncoming) { NSLog(@"着信なう。"); } }; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
こんな感じで着信をキャッチできました。
ちなみに、callStateは、
- CTCallStateIncoming(着信)
- CTCallStateDialing(発信)
- CTCallStateConnected(通話開始)
- CTCallStateDisconnected(切断)
の4種類があるようです。