Question

J'ai un programme qui se lance automatiquement un appel téléphonique lorsque le programme est lancé. Ceci est mis en œuvre dans le -method "de applicationDidFinishLaunching" de AppDelegate.

Le problème est: Quand se termine appel téléphonique et mon application se lance automatiquement à nouveau, il redémarre cette boucle et un appel téléphonique est lancé à nouveau

.

Comment reconnaître si l'application a été renvoyée par cet appel? Ou en quelque sorte facilement enregistrer l'état ou les variables du programme qui définissent si l'appel a déjà été fait?

Je viens de commencer la programmation iPhone et ce venu.

Était-ce utile?

La solution

Avant d'avoir votre application lancer l'appel téléphonique, lire un drapeau BOOL dans la section l'application base de données NSUserDefaults qui demande si elle doit lancer cet appel, par exemple, callWasMade.

Si callWasMade est réglé sur une valeur par défaut initiale de NO, puis réglez le drapeau YES, sauver la valeur à NSUserDefaults puis déclencher l'appel téléphonique du drapeau.

Au lancement ultérieur de votre demande, la valeur de callWasMade (YES) est lu à partir NSUserDefaults et l'appel ne soit pas déclenché.

A ce moment-là, il doit être sûr de retourner la valeur du drapeau de retour à NO pour permettre au prochain appel.

Autres conseils

Cela ne peut pas être fait. L'idée de drapeau est bien jusqu'à ce que vous vous rendez compte que tous les appels fin vous renvoie à l'application. Un exemple de ceci est si vous raccrochez l'appel en appuyant sur le bouton d'alimentation haut.

Pour ces cas, le drapeau sera incompatible (ie. À la prochaine ouverture de votre application pensera que cela revient d'un appel, alors qu'en fait il a été lancé à partir de l'écran d'accueil).

Donc, pour résumer, il n'y a aucun moyen de détecter un retour du téléphone tout et j'ai demandé le soutien de dev d'Apple à ce sujet.

Vous pouvez utiliser UIWebView pour faire un appel comme expliqué dans cette question:

Retour à l'application comportement après appel téléphonique différent en code natif que UIWebView

et l'utilisation de la téléphonie de base pour vérifier si l'appel est 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");

        }

    };
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top