¿Cómo reconocer si la aplicación se vuelve a cargar después de la llamada telefónica?

StackOverflow https://stackoverflow.com/questions/910028

  •  05-09-2019
  •  | 
  •  

Pregunta

Tengo un programa que pone en marcha automáticamente una llamada de teléfono cuando se inicia el programa. Esto se implementa en -method "applicationDidFinishLaunching" de AppDelegate.

El problema es: Cuando termina la llamada telefónica y mi aplicación se inicia automáticamente de nuevo, se reinicia ese bucle y la llamada telefónica se inicia de nuevo

.

¿Cómo reconocer si la aplicación se volvió de esa llamada? O de alguna manera guardar fácilmente el estado o variables del programa que defina si la llamada se hizo ya?

acabo de empezar la programación iPhone y esto ocurrió.

¿Fue útil?

Solución

Antes de que su solicitud lanzar la llamada de teléfono, lea una bandera BOOL en el aplicación de base de datos NSUserDefaults que pregunta si se debe poner en marcha esa llamada, por ejemplo, callWasMade.

Si callWasMade se establece en un valor predeterminado inicial de NO, a continuación, establecer el indicador de YES, guardar el valor de la bandera de NSUserDefaults y luego desencadenar la llamada telefónica.

En el posterior lanzamiento de su aplicación, el valor de callWasMade (YES) se lee a partir NSUserDefaults y la llamada no es disparada.

En este punto, debe ser seguro para voltear el valor de la bandera de nuevo a NO para permitir la siguiente llamada.

Otros consejos

Esto no se puede hacer. La idea de la bandera es agradable hasta que se da cuenta de que no todos terminación de llamadas le devuelve a la aplicación. Un ejemplo de esto es si cuelga la llamada pulsando el botón de encendido superior.

Para esos casos, la bandera será incompatible (es decir. En el próximo lanzamiento de su aplicación va a pensar que esto está regresando de una llamada cuando en realidad fue lanzado desde la pantalla de inicio).

Para resumir no hay manera de detectar el retorno de todo el teléfono y le he pedido ayuda dev de Apple sobre esto.

Puede utilizar UIWebView para hacer una llamada como se explica en esta pregunta:

Volver a aplicación el comportamiento después de la llamada de teléfono diferente en código nativo de UIWebView

y el uso básico de telefonía para comprobar si la llamada terminó:

//before calling loadRequest:
CTCallCenter *callCenter.callEventHandler=^(CTCall* call) {

        if(call.callState == CTCallStateDialing)
        {
            //The call state, before connection is established, when the user initiates the call.
            NSLog(@"Dialing");
        }
        if(call.callState == CTCallStateIncoming)
        {
            //The call state, before connection is established, when a call is incoming but not yet answered by the user.
            NSLog(@"Incoming Call");
        }

        if(call.callState == CTCallStateConnected)
        {
            //The call state when the call is fully established for all parties involved.
            NSLog(@"Call Connected");
        }   

        if(call.callState == CTCallStateDisconnected)
        {
            [self release];
            NSLog(@"Call Ended");

        }

    };
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top