iOS中的后台应用程序,用于检测来电

时间:2012-06-05 04:19:11

标签: iphone objective-c xcode ios4

我需要在iOS中编写一个后台应用程序来监听iPhone上的来电。

有可能吗?谁能提出一些好的指示?

三江源

2 个答案:

答案 0 :(得分:6)

这将严重违反Apple的隐私政策,并且此类应用无法获得批准。

There are call recording apps that sneak around this restriction, though,但他们使用第三方服务而没有实际的内置iPhone API。

答案 1 :(得分:4)

您可以使用CTCallCenter的CTCallState属性在applicationWillEnterForeground中执行此操作。别忘了导入CoreTelephony框架。这是一个例子:

#import <CoreTelephony/CTCall.h>
#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCarrier.h>
#import <CoreTelephony/CTTelephonyNetworkInfo.h>

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [callCenter setCallEventHandler:^(CTCall *call) {
        if ([[call callState] isEqual:CTCallStateIncoming] || [[call callState] isEqual:CTCallStateDialing]) {

            if ([viewController isPlaying])
            {
                NSLog(@"Call was started.");
            }
        } else if ([[call callState] isEqual:CTCallStateDisconnected]) {
            if (callWasStarted)
            {
               NSLog(@"Call was ended.");
            }
        }
    }];
}