Quero verificar se o aplicativo está sendo executado em segundo plano.
No:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Quero verificar se o aplicativo está sendo executado em segundo plano.
No:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Respostas:
O delegado do aplicativo recebe retornos de chamada indicando transições de estado. Você pode rastreá-lo com base nisso.
Além disso, a propriedade applicationState em UIApplication retorna o estado atual.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
é melhor, como UIApplicationStateInactive é quase equivalente a estar em plano ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Isso pode ajudá-lo a resolver seu problema.
Veja o comentário abaixo - inativo é um caso bastante especial e pode significar que o aplicativo está em processo de lançamento em primeiro plano. Isso pode ou não significar "pano de fundo" para você, dependendo do seu objetivo ...
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Se você preferir receber retornos de chamada em vez de "perguntar" sobre o estado do aplicativo, use estes dois métodos em AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
veloz 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
}
Uma extensão do Swift 4.0 para facilitar o acesso:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
Para acessar de dentro do seu aplicativo:
let myAppIsInBackground = UIApplication.shared.isBackground
Se você estiver procurando informações sobre os vários estados ( active
, inactive
e background
), poderá encontrar a documentação da Apple aqui .
locationManager:didUpdateToLocation:fromLocation:
método?