Beim Empfang eines eingehenden Anrufs ist das aufgezeichnete Video beschädigt und die AVFoundation-Methoden geben Fehler aus
-
13-11-2019 - |
Frage
Ich habe eine Videoaufzeichnungs-App.Alles funktioniert gut.Außer wenn während der Aufnahme ein Anruf eingeht.
Wenn ein Anruf eingeht, versuche ich, die Aufzeichnung zu beenden. Alle meine Anrufe zum Schreiben an einen AVAssetWriter werden jedoch abgelehnt.audioWriterInput appendSampleBuffer
gibt nein zurück, appendPixelBuffer
Fehler aus.Ich versuche, avAssetWriter aufzurufen finishWriting
aber das kommt zurück AVAssetWriterStatusFailed
.
Nichts funktioniert, mein Video ist beschädigt, weil es den Anschein hat, dass meine üblichen Methoden zum Beenden einer Aufnahmesitzung nicht zulässig sind, sobald ein Anruf eingeht.
Worauf kann ich achten, um eine Aufnahmesitzung ordnungsgemäß zu beenden, wenn ein Anruf eingeht?Das Einzige, was ich derzeit tun kann, ist zuzuhören applicationWillResignActive
und alles stoppen, aber das verhindert die Aufzeichnung, während ein Benutzer eine Textnachricht usw. erhält.Dadurch würde meine App anders funktionieren als die native Kamera-App.
Lösung
Werfen Sie einen Blick auf die Kerntelefonie Rahmen und insbesondere die CTCallCenter
Klasse.Sie können eine registrieren callEventHandler
Das ist ein Block, der a akzeptiert CTCall
Objekt.Dieses Objekt beschreibt den Anrufstatus.Versuchen Sie, die Aufzeichnung zu beenden, wenn das Anrufobjekt anzeigt, dass es sich um einen eingehenden Anruf handelt.