当iphone上有来电和外拨电话结束时,我可以发起事件吗?事件的Axample正在调用Web服务。
答案 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不允许应用程序拥有此类钩子。