Ich möchte überprüfen, ob die App im Hintergrund ausgeführt wird.
Im:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Ich möchte überprüfen, ob die App im Hintergrund ausgeführt wird.
Im:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Antworten:
Der App-Delegat erhält Rückrufe, die Statusübergänge anzeigen. Sie können es basierend darauf verfolgen.
Auch die Eigenschaft applicationState in UIApplication gibt den aktuellen Status zurück.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
ist besser, da UIApplicationStateInactive fast gleichbedeutend mit Hintergrund ist ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Dies kann Ihnen bei der Lösung Ihres Problems helfen.
Siehe Kommentar unten - Inaktiv ist ein ziemlich spezieller Fall und kann bedeuten, dass die App gerade in den Vordergrund gestellt wird. Das kann für Sie "Hintergrund" bedeuten oder auch nicht, abhängig von Ihrem Ziel ...
Swift 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Wenn Sie Rückrufe erhalten möchten, anstatt nach dem Anwendungsstatus zu fragen, verwenden Sie diese beiden Methoden in Ihrem AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
schnell 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
}
Eine Swift 4.0-Erweiterung, die den Zugriff etwas erleichtert:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
So greifen Sie über Ihre App zu:
let myAppIsInBackground = UIApplication.shared.isBackground
Wenn Sie Informationen zu den verschiedenen Staaten suchen ( active
, inactive
und background
), können Sie das finden Apple - Dokumentation hier .
locationManager:didUpdateToLocation:fromLocation:
Methode?