iphone - sim - recibir llamadas en ipad
iOS Cómo comprobar si actualmente está en la llamada telefónica (3)
He mirado alrededor y todo lo que puedo encontrar es verificar el estado de llamada de CTCallCenter. Sin embargo, esto funciona al escuchar un evento, que, dependiendo de si la aplicación está activa / suspendida / reanudada, el evento se puede generar en diferentes momentos.
Lo que necesito es que en lugar de escuchar el evento y que me avisen cuando la llamada está conectada, quiero decidir cuándo preguntar si la llamada está conectada.
Caso de uso: cuando la llamada telefónica está conectada, el usuario sabe y siempre hará clic en el icono de la aplicación, que abrirá la aplicación. En este momento, solo quiero ejecutar una función rápida para verificar si actualmente estoy de guardia o no.
¿Es esto posible?
Gracias por la respuesta ThomasW. Pensé que también iba a publicar el código.
- (void)applicationWillEnterForeground:(UIApplication *)application
{
CTCallCenter *ctCallCenter = [[CTCallCenter alloc] init];
if (ctCallCenter.currentCalls != nil)
{
NSArray* currentCalls = [ctCallCenter.currentCalls allObjects];
for (CTCall *call in currentCalls)
{
if(call.callState == CTCallStateConnected)
{
// connected
}
}
}
}
El objeto CTCallCenter
tiene una propiedad currentCalls
que es un NSSet
de las llamadas actuales. Si hay una llamada, la propiedad currentCalls
debería ser! = Nil.
Si desea saber si alguna de las llamadas está realmente conectada, tendrá que recorrer las llamadas actuales y verificar el callState
la callState
para determinar si está CTCallStateConnected
o no.
#import <CoreTelephony/CTCallCenter.h>
#import <CoreTelephony/CTCall.h>
-(bool)isOnPhoneCall {
/*
Returns TRUE/YES if the user is currently on a phone call
*/
CTCallCenter *callCenter = [[[CTCallCenter alloc] init] autorelease];
for (CTCall *call in callCenter.currentCalls) {
if (call.callState == CTCallStateConnected) {
return YES;
}
}
return NO;
}