2016-06-01 9 views
0

Meine App zeichnet die ganze Zeit auf und sollte Ton wiedergeben und die Aufnahme beenden, wenn der Anruf erkannt wird. Nach dem Telefonat sollte die Aufnahme fortgesetzt werden.iOS-Überwachung Anrufstatus im Hintergrund

Ich habe diese Aufgabe mit CTCallCenter im Vordergrund erledigt.

CTCallCenter funktioniert jedoch nicht ordnungsgemäß, während sich meine App im Hintergrund befindet. Selbst wenn der Hintergrund-Flag "VoIp" zu meiner App hinzugefügt würde, würde CTCallCenter CallDisconnected verpassen. Ist das ein Fehler von iOS?

Also habe ich "AVAudioSessionInterruptionNotification" versucht. Es schien, als würde es nie ein einziges InterruptionBegin und InterruptionEnd verpassen. Aber es funktioniert nicht, da ich Sound nach UnterbrechungBeginn erkannt habe. Anscheinend bedeutet InterruptionBegin, dass meine Audiositzung inaktiv ist und kein Ton ausgegeben werden konnte.

Gibt es eine Möglichkeit, CTCallCenter in meinem Fall funktionsfähig zu machen?

+0

Mögliches Duplikat von [CTCallCenter - Call Event Handler - im Hintergrund] (http://stackoverflow.com/questions/10102108/ctcallcenter-call-event-handler-in-background-state) – nverinaud

Antwort

1

Der einzige Weg, den ich gefunden habe, um zu überprüfen, ob es einen GSM-Anruf im Hintergrund gibt, ist die Verfügbarkeit der Audio-Einheit, die vom GSM-Anruf verwendet wird.

So

BOOL isOtherAudioPlaying=[[AVAudioSession sharedInstance] isOtherAudioPlaying]; 

wird Ihnen sagen, ob Sie einen aktiven GSM-Anruf haben. Ich bin mir nicht sicher, ob es Nebenwirkungen mit anderen Apps hat, die die Audioeinheit verwenden. Ich habe es mit Kamera- und Sprachnotizen versucht und sie scheinen pausiert zu sein und haben daher keinen Einfluss auf deine App.