Iphone 在iOS4中检测呼叫状态

Iphone 在iOS4中检测呼叫状态,iphone,ios4,core-telephony,Iphone,Ios4,Core Telephony,我想知道是否有可能检测到用户是否正在从当前位于后台的应用程序调用 或者,如果通话是从我的应用启动的,则在通话结束时收到通知 或者,甚至更重要的是,是否有可能检测到哪个应用程序位于前台? 我不相信这是可能的,但我不得不尝试…;-) 任何信息将不胜感激 谢谢。在CTCallCenter中,有一种方法,callEventHandler可以传递一个块,当调用事件发生时,该块将被调用。在此块中,将向您传递一个CTCall对象,并可以获取callState。因此,您可以在呼叫启动或结束时收到通知,并进行适当

我想知道是否有可能检测到用户是否正在从当前位于后台的应用程序调用

或者,如果通话是从我的应用启动的,则在通话结束时收到通知

或者,甚至更重要的是,是否有可能检测到哪个应用程序位于前台?
我不相信这是可能的,但我不得不尝试…;-)

任何信息将不胜感激


谢谢。

CTCallCenter
中,有一种方法,
callEventHandler
可以传递一个块,当调用事件发生时,该块将被调用。在此块中,将向您传递一个
CTCall
对象,并可以获取
callState
。因此,您可以在呼叫启动或结束时收到通知,并进行适当的处理。您无法获取是哪个应用程序发起了呼叫,但如果您在进行呼叫时设置了ivar,则可以确定是您的应用程序发起了呼叫

例如:

CTCallCenter *callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call){
    if (call.callState == CTCallStateDisconnected)
    { 
        //handle disconnect
    }
};
编辑:重新阅读您的问题,您希望在挂起时发生这些事件,对吗?我认为那是不可能的

从:

如果您的应用程序在调用事件发生时处于活动状态,系统会立即将事件分派给处理程序。但是,调用事件也可以在应用程序挂起时发生。挂起时,应用程序不会接收调用事件。当应用程序恢复活动状态时,无论应用程序挂起时调用经历了多少状态更改,它都会为每个更改状态的调用接收一个调用事件。当应用程序返回活动状态时,发送给处理程序的单个调用事件描述了调用当时的状态


如果您的应用程序正在后台运行,并且正在进行AVAudioSession,您将在收到电话时收到回电,告知您的AVAudioSession已被中断。好了,这就是你得到的所有信息。

你是说在另一个应用程序的电话中?就像在后台运行Skype中的通话?请参见,谢谢。看来核心电话技术可以为我的目标服务。你知道我能否把我的应用程序从后台带到前台吗?不,你不能自己移动到前台。而且,你将在你收到的活动中受到限制。您所能做的最好的事情就是监听状态转换通知并适当地处理事情。谢谢。我被几个iOS3项目困住了,没有时间学习所有的iOS4创新…谢谢。顺便问一下,这是否意味着我不能在打电话时播放声音/音乐?即使我的应用程序在前面(而手机应用程序在后台)?我的应用程序(在后台)在打电话时播放声音也有问题。我使用AVAudioSessionDelegate回调来跟踪它是否被中断,如果被中断,应用程序将停止播放声音。