みかづきブログ その3

3ヶ月つづけてみました。

iPhoneアプリで着信イベントをキャッチしよう。

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種類があるようです。