2017-01-03 3 views
1

Donc, je veux obtenir les horaires de l'appel cellulaire que je place depuis mon application. Je reçois l'heure de début de l'appel dès que l'appel est connecté, mais je reçois également un bloc de temps de début exécuté lorsque les appels se terminent, ce qui écrase ma propriété callStartTime. La même chose se produit avec les appels entrants (comme vous pouvez le voir sur la capture d'écran du journal de la console). J'utilise telprompt:// pour passer des appels et revenir à l'application. Est-ce un bug?CXCallObserver déclenche la méthode déléguée à chaque appel d'applicationDidBecomeActive?

call.hasConnected is called while ending cellular call

Répondre

1

La méthode déléguée CXCallObserver est invoqué chaque fois que des appels ont changé, et est appelé une fois lorsqu'un appel se connecte, puis plus tard si/quand cette fin de l'appel. Les propriétés hasConnected et hasEnded doivent être interprétées comme "a ever connected" et "a ever ended", respectivement.

Ainsi, je recommande d'utiliser la logique comme celle-ci:

if (call.hasConnected) { 
    if (!call.hasEnded) { 
     // record start time (unless start time has already been recorded) 
    } else { 
     // record end time (unless end time has already been recorded) 
    } 
} 
+1

Ouais, tu as raison. C'est ainsi que je l'ai fait à la fin (http://imgur.com/a/4Dgza). J'ai une autre variable BOOL que je peux utiliser pour marquer les états d'appel. – Manjuhere