Cómo evitar que mi aplicación se ejecute en segundo plano en el iPhone

¿Hay alguna forma de hacer que una aplicación se cierre en lugar de ir a fondo cuando se presiona el botón de inicio? Por razones de seguridad, sería mejor si la aplicación no se ejecutara en segundo plano sino que se cerrara cuando se empujara la página principal. Esto no es para la seguridad de los usuarios, sino más bien para los datos de la compañía en la aplicación, por lo que no es una elección del usuario. No pude encontrar ninguna forma de dejar de fumar que no sea forzar una salida, lo que Apple desaconseja.

Consulte la opción de exclusión de la ejecución de fondo en la guía de progtwigción de la aplicación iphone:

“Si no desea que su aplicación permanezca en segundo plano cuando se abandona, puede optar por excluirse explícitamente del modelo de ejecución en segundo plano agregando la clave UIApplicationExitsOnSuspend al archivo Info.plist de su aplicación y estableciendo su valor en YES.

Cuando una aplicación se desactiva, realiza un ciclo entre los estados activo, inactivo y no activo, y nunca entra en los estados de fondo o suspendidos.

Cuando el usuario pulsa el botón Inicio para salir de la aplicación, se llama al método applicationWillTerminate: del delegado de la aplicación y la aplicación tiene aproximadamente cinco segundos para limpiar y salir antes de que se termine y vuelva al estado de no ejecución.

Simplemente vaya a info.plist de su proyecto y marque “La aplicación no se ejecuta en segundo plano” en SÍ.

Desafortunadamente, después de probar todo, todavía no podía ver salir mi aplicación al presionar el botón de inicio. Siempre pasaba a segundo plano a pesar de que UIApplicationExitsOnSuspend era YES y de tipo boolean en un archivo plist y quité la aplicación de Simulator, reinicié Xcode y Simulator e intenté con todo lo sugerido.

Finalmente comencé a depurar la aplicación y encontré una función que impedía que la aplicación saliera. La función era bastante simple y estaba descargando algunas imágenes de la red y recibía una llamada de applicationDidFinishLaunching del archivo appDelegate. Esta función estaba delegando la tarea de crear una conexión de red y descargar datos a otra clase reutilizable donde tenía el siguiente código:

if(isBackgroundProcessingSupported){ appDelegate.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{}]; [NSURLConnection connectionWithRequest:request delegate:self]; } 

Así que finalmente resultó que el código anterior era responsable de poner la aplicación en segundo plano al presionar el botón de inicio. Cuando comenté el código anterior, mi aplicación se está saliendo en lugar de pasar al segundo plano.

NOTA: El código estaba allí antes, ya que la aplicación inicial era compatible con el procesamiento en segundo plano.

Espero que esto ayude a alguien que también está luchando por encontrar la razón como yo.