Voglio verificare se l'app è in esecuzione in background.
Nel:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Voglio verificare se l'app è in esecuzione in background.
Nel:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Risposte:
Il delegato dell'app riceve i callback che indicano le transizioni di stato. Puoi seguirlo in base a quello.
Anche la proprietà applicationState in UIApplication restituisce lo stato corrente.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
sia meglio, dato che UIApplicationStateInactive è quasi equivalente a essere in background ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Questo può aiutarti a risolvere il tuo problema.
Vedi il commento qui sotto: inattivo è un caso abbastanza speciale e può significare che l'app è in fase di avvio in primo piano. Ciò può o meno significare "sfondo" per te a seconda del tuo obiettivo ...
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Se si preferisce ricevere callback anziché "chiedere" sullo stato dell'applicazione, utilizzare questi due metodi nel proprio AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
veloce 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
}
Un'estensione di Swift 4.0 per semplificare l'accesso:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
Per accedere dall'interno della tua app:
let myAppIsInBackground = UIApplication.shared.isBackground
Se stai cercando informazioni sui vari stati ( active
, inactive
e background
), puoi trovare la documentazione di Apple qui .
locationManager:didUpdateToLocation:fromLocation:
metodo?