Je souhaite vérifier si l'application s'exécute en arrière-plan.
Dans:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Je souhaite vérifier si l'application s'exécute en arrière-plan.
Dans:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Réponses:
Le délégué d'application reçoit des rappels indiquant les transitions d'état. Vous pouvez le suivre en fonction de cela.
La propriété applicationState dans UIApplication renvoie également l'état actuel.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
c'est mieux, car UIApplicationStateInactive est presque équivalent à être en arrière-plan ...
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 train d'être lancée au premier plan. Cela peut ou non signifier "contexte" pour vous en fonction de votre objectif ...
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Si vous préférez recevoir des rappels au lieu de "poser des questions" sur 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");
}
rapide 5
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
}
Swift 4+
let appstate = UIApplication.shared.applicationState
switch appstate {
case .active:
print("the app is in active state")
case .background:
print("the app is in background state")
case .inactive:
print("the app is in inactive state")
default:
print("the default state")
break
}
Une extension Swift 4.0 pour y accéder un peu plus facilement:
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 la documentation Apple ici .
locationManager:didUpdateToLocation:fromLocation:
méthode?