Quiero verificar si la aplicación se ejecuta en segundo plano.Comprueba si la aplicación iOS está en segundo plano
En:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Quiero verificar si la aplicación se ejecuta en segundo plano.Comprueba si la aplicación iOS está en segundo plano
En:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
App delegado obtiene devoluciones de llamada que indican las transiciones de estado. Puedes rastrearlo en base a eso.
También la propiedad applicationState en UIApplication devuelve el estado actual.
[[UIApplication sharedApplication] applicationState]
Gracias, y para mayor claridad, es [[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground. – podperson
Creo que '[[UIApplication sharedApplication] applicationState]! = UIApplicationStateActive' es mejor, ya que UIApplicationStateInactive es casi equivalente a estar en segundo plano ... – Raspu
Los estados se detallan aquí: https://developer.apple.com/library /ios/documentation/uikit/reference/UIApplication_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UIApplicationState –
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Esto le puede ayudar a resolver su problema.
Ver el comentario a continuación: inactivo es un caso bastante especial, y puede significar que la aplicación está en el proceso de ser lanzada al primer plano. Que puede o no puede significar "fondo" para usted en función de su objetivo ...
Respuesta agradable, útil. Funcionó – Saranjith
De los documentos: UIApplicationStateInactive: la aplicación se ejecuta en primer plano, pero no está recibiendo eventos. Esto puede suceder como resultado de una interrupción o porque la aplicación está en transición hacia o desde el fondo. –
Si prefiere recibir devoluciones de llamada en lugar de "preguntar" sobre el estado de la aplicación, utilizar 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");
}
Es importante tener en cuenta que se llama a applicationWillEnterForeground antes de applicationDidBecomeActive. Por lo tanto, al marcar applicationState desde applicationWillEnterForeground se devolverá UIApplicationStateBackground. Esto me sorprendió un poco. Por lo tanto, utilicé una combinación de las soluciones anteriores marcando applicationState desde applicationDidBecomeActive en lugar de verificar (incorrectamente) applicationState para UIApplicationStateBackground desde applicationWillEnterForeground. –
Tenía esta misma solución y es adecuada para casos en los que necesita la información de estado en otro hilo/cola. – naz
versión Swift:
let state = UIApplication.sharedApplication().applicationState
if state == .Background {
print("App in Background")
}
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
¿Estás hablando del método 'locationManager: didUpdateToLocation: fromLocation:'? –