No llamar a didBecomeActive si la tarea de background expira

Esta es la situación:

Estoy eligiendo un video grande con imagepicker. Obviamente, el selector tomará un poco de time para comprimir el video. Por lo tanto, para facilitar la experiencia del usuario, he habilitado la tarea de background para ello.

Ahora viene el problema:

Si el usuario elige un video y toca el button de inicio, la aplicación pasa a segundo plano y continúa comprimiendo el video durante los siguientes 600 segundos. Y la tarea de background caduca. En el controller de caducidad he detenido mi tarea de background.

Ahora si el usuario está reanudando la aplicación después de la expiración del background

- (void)applicationDidBecomeActive:(UIApplication *)application 

no se está invocando ¿Alguien me puede explicar por qué sucede esto?

¡Cuando las tareas de background venzan, su aplicación realmente se cerrará! Entonces no se está volviendo activo, está en marcha.

Debe manejar cosas en su controller de caducidad o cuando su tarea de background finalice correctamente. En ambas situaciones , debe establecer que la label de segundo plano no esté invalidada .

Si su aplicación pasa a segundo plano mientras convierte el video y luego el usuario lo vuelve a abrir ANTES de que finalice la tarea o la tarea en segundo plano caduque, debería ver la aplicación que llama a la aplicación IdBecomeActiva.

Supongo que lo sabe, pero tal vez le faltan las properties de multitarea en su file Info.plist, por lo que su aplicación no acepta tareas de background como espera.

– (void) applicationDidBecomeActive: aplicación (UIApplication)

Este método solo se llama cuando el estado de la aplicación se cambia del estado inactivo al estado activo. ¿Es posible saber si la recolección de video finalizó? Si es posible, simplemente guárdelo. y cuando el usuario regrese a la aplicación. simplemente dispara la funcionalidad que requieras.

¿Podría intentar agregar una statement de logging al método applicationDidFinishLaunching ? Puede ser que la aplicación termine o se cuelgue antes de que un usuario la abra.

Además, creo que la forma correcta es save el context de análisis actual cuando la aplicación recibe señal como applicationDidFinishLaunching y cuando la aplicación comienza a analizar. Porque un usuario puede cerrar la aplicación manualmente.