[ios] iOS 앱이 백그라운드인지 확인하는 방법이 있습니까?

앱이 백그라운드에서 실행 중인지 확인하고 싶습니다.

에:

locationManagerDidUpdateLocation {
    if(app is runing in background){
        do this
    }
}



답변

앱 델리게이트는 상태 전환을 나타내는 콜백을받습니다. 이를 기반으로 추적 할 수 있습니다.

또한 UIApplication 의 applicationState 속성은 현재 상태를 반환합니다.

[[UIApplication sharedApplication] applicationState]


답변

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")
    }


답변

스위프트 버전 :

let state = UIApplication.sharedApplication().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
        }