En CTCallCenter
, existe un método, callEventHandler
que puede pasar un bloque que se llamará cuando ocurran eventos de llamada. En este bloque, se le pasará un objeto CTCall
, y puede obtener el callState
. Por lo tanto, puede recibir una notificación cuando se inicia o finaliza una llamada y manejarla adecuadamente. No puede obtener la aplicación que inició la llamada, pero si establece un ivar cuando realiza la llamada, puede indicar que es su aplicación la que realizó la llamada.
Por ejemplo:
CTCallCenter *callCenter = [[CTCallCenter alloc] init];
callCenter.callEventHandler=^(CTCall* call){
if (call.callState == CTCallStateDisconnected)
{
//handle disconnect
}
};
EDIT: Al volver a leer su pregunta, desea que estos eventos mientras está suspendida, correcto? No creo que eso sea posible.
Desde el docs:
Si la aplicación está activa cuando un evento de llamada se lleva a cabo, el sistema distribuye el evento al controlador de inmediato. Sin embargo, los eventos de llamada también pueden tener lugar mientras se suspende su aplicación. Mientras está suspendido, su aplicación no recibe eventos de llamadas. Cuando su aplicación reanuda el estado activo, recibe un único evento de llamada para cada llamada que cambió de estado, sin importar cuántos cambios de estado experimentó la llamada mientras se suspendió su aplicación. El evento de llamada única enviado a su controlador, cuando su aplicación vuelve al estado activo, describe el estado de la llamada en ese momento.
¿Quiere decir en un * teléfono * llamar en otra aplicación? ¿Como en una llamada en Skype ejecutándose en segundo plano? – progrmr
Consulte http://stackoverflow.com/questions/3319805/detecting-call-state-in-ios4 –