답변:
앱 델리게이트는 상태 전환을 나타내는 콜백을받습니다. 이를 기반으로 추적 할 수 있습니다.
또한 UIApplication 의 applicationState 속성은 현재 상태를 반환합니다.
[[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
}
조금 더 쉽게 접근 할 수있는 Swift 4.0 확장 :
import UIKit
extension UIApplication {
var isBackground: Bool {
return UIApplication.shared.applicationState == .background
}
}
앱 내에서 액세스하려면 :
let myAppIsInBackground = UIApplication.shared.isBackground
당신이 다양한 상태에 대한 정보를 찾고 (경우 active
, inactive
과 background
), 당신은 찾을 수 있습니다 여기에 애플 문서를 .
locationManager:didUpdateToLocation:fromLocation:
방법 에 대해 이야기하고 있습니까?