Quiero verificar si la aplicación se ejecuta en segundo plano.
En:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Quiero verificar si la aplicación se ejecuta en segundo plano.
En:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Respuestas:
El delegado de la aplicación recibe devoluciones de llamada que indican transiciones de estado. Puedes rastrearlo en base a eso.
Además, la propiedad applicationState en UIApplication devuelve el estado actual.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
es mejor, ya que UIApplicationStateInactive es casi equivalente a estar en segundo plano ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Esto puede ayudarlo a resolver su problema.
Vea el comentario a continuación: inactivo es un caso bastante especial y puede significar que la aplicación está en proceso de iniciarse en primer plano. Eso puede o no significar "antecedentes" para usted dependiendo de su objetivo ...
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Si prefiere recibir devoluciones de llamada en lugar de "preguntar" sobre el estado de la aplicación, use estos dos métodos en su AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
rápido 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
}
Una extensión Swift 4.0 para facilitar el acceso a ella:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
Para acceder desde su aplicación:
let myAppIsInBackground = UIApplication.shared.isBackground
Si está buscando información sobre los diferentes estados ( active
, inactive
y background
), se puede encontrar la documentación de Apple aquí .
locationManager:didUpdateToLocation:fromLocation:
método?