web-dev-qa-db-fra.com

Est-il possible de vérifier si l'application iOS est en arrière-plan?

Je veux vérifier si l'application est en cours d'exécution en arrière-plan.

Dans:

locationManagerDidUpdateLocation {
    if(app is runing in background){
        do this
    }
}
170
bobby grenier

Le délégué de l'application reçoit des rappels indiquant les transitions d'état. Vous pouvez suivre cela en fonction de cela.

De même, la propriété applicationState dans UIApplication renvoie l'état actuel.

[[UIApplication sharedApplication] applicationState]
277
DavidN
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
   //Do checking here.
}

Cela peut vous aider à résoudre votre problème.

Voir le commentaire ci-dessous - inactif est un cas assez particulier, et peut signifier que l'application est en cours de lancement au premier plan. Cela peut ou peut ne pas signifier "fond" pour vous en fonction de votre objectif ...

172
Aswathy Bose

Swift

    let state = UIApplication.shared.applicationState
    if state == .background {
        print("App in Background")
    }
24
Meet

Version rapide:

   let state = UIApplication.sharedApplication().applicationState
            if state == .Background {
                print("App in Background")
             }
18
ioopl

Si vous préférez recevoir des rappels au lieu de "demander" à propos de l'état de l'application, utilisez ces deux méthodes dans votre AppDelegate:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"app is actvie now");
}


- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"app is not actvie now");
}
8
klimat

Swift 4

let state = UIApplication.shared.applicationState
    if state == .background {
        print("App in Background")
        //MARK: - if you want to perform come action when app in background this will execute 
        //Handel you code here
    }
    else if state == .foreground{
        //MARK: - if you want to perform come action when app in foreground this will execute 
        //Handel you code here
    }
3
Shakeel Ahmed

Une extension Swift 4.0 pour en faciliter l’accès:

import UIKit

extension UIApplication {
    var isBackground: Bool {
        return UIApplication.shared.applicationState == .background
    }
}

Pour accéder à partir de votre application:

let myAppIsInBackground = UIApplication.shared.isBackground

Si vous recherchez des informations sur les différents états (active, inactive et background), vous pouvez trouver le documentation Apple ici .

1
CodeBender