在iphone中有来电和去电时,我们可以开一个活动吗?

时间:2011-07-23 05:25:14

标签: objective-c iphone events phone-call

当iphone上有来电和外拨电话结束时,我可以发起事件吗?事件的Axample正在调用Web服务。

3 个答案:

答案 0 :(得分:4)

是的,你可以,但不一定是立即。

有一个名为CoreTelephony框架的框架,它有一个CTCallCenter类。这个类的一个属性是callEventHandler property。这是一个在电话呼叫的状态发生变化时被触发的块。例如:

CTCallCenter *callCenter = ...; // get a CallCenter somehow; most likely as a global object or something similar?

[callCenter setCallEventHandler:^(CTCall *call) {
  if ([[call callState] isEqual:CTCallStateConnected]) {
    //this call has just connected
  } else if ([[call callState] isEqual:CTCallStateDisconnected]) {
    //this call has just ended (dropped/hung up/etc)
  }
}];

您无法访问任何电话号码。唯一其他有用的信息是CTCall上的标识符属性,因此您可以唯一标识CTCall对象。

<强>注意

除非您的应用位于前台,否则此事件处理程序不会被调用!如果您在应用程序后台处理时拨打和接听电话,则事件处理程序将不再触发,直到您的应用再次变为活动状态,此时(根据上面链接的文档)将调用事件处理程序每个调用一次,当应用程序在后台时已更改状态。

答案 1 :(得分:1)

不,但是当这些事件发生时,你确实会在应用程序中收到回调。

    -(void)applicationWillResignActive:(UIApplication *)application{
        //our app is going to loose focus since thier is an incoming call
        [self pauseApp];
    }

    -(void)applicationDidBecomeActive:(UIApplication *)application{
            //the user declined the call and is returning to our app
            [self resumeApp];
    }

答案 2 :(得分:0)

没有。截至目前的SDK,这是不可能的。 Apple不允许应用程序拥有此类钩子。