在iPhone中调用事件

时间:2013-10-15 14:00:48

标签: iphone ios core-telephony

我正在尝试获取呼叫事件(呼叫接收,呼叫结束等) 我试图运行CoreTelephonyDemo的示例代码,但我没有收到任何调用事件。 任何人都可以指导我这样做。

我在applicationWillResignActive中尝试了这段代码,但我没有收到任何事件。我错过了什么或做错了吗?请指导。

- (void)applicationWillResignActive:(UIApplication *)application
{
   CTCallCenter *callCenter1 = [[CTCallCenter alloc] init];
    callCenter1.callEventHandler=^(CTCall* call)
    {
        if (call.callState == CTCallStateDisconnected)
        {
            NSLog(@"Call has been disconnected");
        }
        else if (call.callState == CTCallStateConnected)
        {
            NSLog(@"Call has just been connected");
        }
        else if(call.callState == CTCallStateConnected)
        {
            NSLog(@"Call is incoming");
        }
        else
        {
            NSLog(@"None of the conditions");
        }
    };
}

1 个答案:

答案 0 :(得分:1)

您可以检测呼叫事件。当各种事件发生时,您的应用程序委托将接收对各种UIApplicationDelegate协议方法的调用。其中一个是- (void)applicationWillResignActive:(UIApplication *)应用程序方法,它被调用来电或短信,但也可以出于其他原因调用。

只有当您的应用在前台运行时,才能检测到来电。

如果您的应用程序属于任何后台运行类别(VOIP,音频,位置跟踪或附件),您可以在后台使用CTCallCenter。但请注意,如果你错过了使用后台运行模式的话,Apple会拒绝你的应用程序。

CTCallCenter将允许您检测已启动或正在进行的任何呼叫。

但是,您将无法检测到有关该呼叫的任何详细信息,CTCall识别该呼叫只会告诉您此状态。 CTCall的callID只会为您提供呼叫的唯一标识符,但不会为您调用该号码。