Lors de la réception d'un appel entrant, la vidéo enregistrée est corrompue et les méthodes AVFoundation donnent des erreurs
-
13-11-2019 - |
Question
J'ai une application d'enregistrement vidéo. Tout fonctionne bien. Sauf lorsqu'un appel téléphonique est reçu lors de l'enregistrement.
Lorsqu'un appel téléphonique est reçu, j'essaie de mettre fin à l'enregistrement, cependant, tous mes appels pour écrire à un Avassetwriter sont refusés. audiowriterinput appendSampleBuffer
Renvoie non, appendPixelBuffer
erreurs. J'essaye d'appeler Avassetwriter finishWriting
Mais ça revient AVAssetWriterStatusFailed
.
Rien ne fonctionne, ma vidéo est corrompue car il semble que mes méthodes habituelles pour terminer une session d'enregistrement ne soient pas autorisées une fois qu'un appel est reçu.
Que puis-je écouter pour terminer correctement une session d'enregistrement lorsqu'un appel téléphonique est reçu? La seule chose que je peux actuellement faire est d'écouter applicationWillResignActive
Et arrêtez tout, mais cela empêche l'enregistrement pendant qu'un utilisateur reçoit un SMS, etc. ce qui ferait fonctionner mon application différemment de l'application de caméra native.
La solution
Jetez un œil au Téléphonie centrale cadre, et spécifiquement le CTCallCenter
classer. Vous pouvez enregistrer un callEventHandler
qui est un bloc qui accepte un CTCall
objet. Cet objet décrit l'état d'appel. Essayez de terminer l'enregistrement lorsque l'objet d'appel indique qu'il s'agit d'un appel entrant.