Я хочу перевірити, чи працює програма у фоновому режимі.
В:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Я хочу перевірити, чи працює програма у фоновому режимі.
В:
locationManagerDidUpdateLocation {
if(app is runing in background){
do this
}
}
Відповіді:
Делегат програми отримує зворотні дзвінки із зазначенням переходів стану. Ви можете відстежувати це на основі цього.
Також властивість applicationState в UIApplication повертає поточний стан.
[[UIApplication sharedApplication] applicationState]
[[UIApplication sharedApplication] applicationState] != UIApplicationStateActive
, що краще, оскільки UIApplicationStateInactive майже еквівалентний фоновому режиму ...
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
//Do checking here.
}
Це може допомогти вам у вирішенні вашої проблеми.
Дивіться коментар нижче - неактивний - це досить особливий випадок, і це може означати, що додаток зараз запускається на перший план. Це може чи не може означати "передумови" для вас залежно від вашої мети ...
Швидкий 3
let state = UIApplication.shared.applicationState
if state == .background {
print("App in Background")
}
Якщо ви віддаєте перевагу отримувати зворотні дзвінки замість "запитувати" про стан програми, використовуйте ці два способи у вашому AppDelegate
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSLog(@"app is actvie now");
}
- (void)applicationWillResignActive:(UIApplication *)application {
NSLog(@"app is not actvie now");
}
стрімкий 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
}
Швидкий 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
}
Розширення Swift 4.0 для полегшення доступу до нього:
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
Щоб отримати доступ зсередини програми:
let myAppIsInBackground = UIApplication.shared.isBackground
Якщо ви шукаєте інформацію про різні стани ( active
, inactive
і background
), можна знайти в документації компанії Apple тут .
locationManager:didUpdateToLocation:fromLocation:
метод?