Detectar la aplicación iOS al ingresar al fondo

Estoy trabajando en un juego para iOS codificado en Swift. Intenté encontrar una forma de detectar cuándo la aplicación entra en modo de fondo o si se interrumpe por otros motivos, por ejemplo, una llamada telefónica, pero no puedo encontrar nada. ¿Cómo lo hago?

Swift 3 o posterior

Puede agregar un observador a su controlador de vista para UIApplicationWillResignActiveNotification

 NotificationCenter.default.addObserver(self, selector: #selector(willResignActive), name: .UIApplicationWillResignActive, object: nil) 

y agregue un método selector a su controlador de vista que se ejecutará cuando su aplicación reciba esa notificación:

 @objc func willResignActive(_ notification: Notification) { // code to execute } 

Para detectar que la aplicación entra en segundo plano, puede verificar en la aplicaciónDelegate.m encontrar el método delegado de la aplicación

applicationDidEnterBackground

Se llamará a este método, una vez que la aplicación entre en segundo plano.

Swift3

 let notificationCenter = NotificationCenter.default notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: Notification.Name.UIApplicationWillResignActive, object: nil) func appMovedToBackground() { print("App moved to background!") } 

Eche un vistazo a los métodos delegates definidos en su instancia de UIApplicationDeletegate (llamada AppDelegate.m por defecto). Específicamente lo siguiente sería útil:

 - (void)applicationWillResignActive:(UIApplication *)application 

Se llama a este método para que su aplicación sepa que está a punto de pasar del estado activo al inactivo. Esto puede ocurrir para ciertos tipos de interrupciones temporales (como una llamada telefónica o mensaje SMS entrantes) o cuando el usuario sale de la aplicación y comienza la transición al estado de fondo. Una aplicación en estado inactivo continúa ejecutándose pero no envía eventos entrantes a los respondedores.

Tomado de la documentación de Apple – aquí