Detectar la input de background de la aplicación iOS

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 background o se interrumpe por otros motivos, por ejemplo, una llamada telefónica pero no puede encontrar nada. ¿Cómo lo hago?

Xcode 8.3 • Swift 3.1

Puede agregar un observador a su controller de vista para UIApplicationWillResignActiveNotification

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

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

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

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

applicationDidEnterBackground

Este método se llamará, 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 methods delegates definidos en su instancia de UIApplicationDeletegate (llamada AppDelegate.m de forma pnetworkingeterminada). Específicamente, lo siguiente sería útil:

 - (void)applicationWillResignActive:(UIApplication *)application 

Este método se llama para que su aplicación sepa que está a punto de pasar del estado activo al inactivo. Esto puede ocurrir para ciertos types de interrupciones temporales (como una llamada telefónica entrante o un post SMS) o cuando el usuario abandona la aplicación y comienza la transición al estado de background. Una aplicación en el estado inactivo continúa ejecutándose, pero no envía events entrantes a los respondedores.

Tomado de la documentation de Apple – aquí