Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

iOS 앱의 포그라운드·백그라운드 상태를 감지하는 방법 완벽 가이드

iOS 애플리케이션이 현재 포그라운드에서 실행 중인지, 백그라운드에 있는지 확인해야 하는 경우가 자주 있습니다. 다행히 UIApplication 클래스를 활용하면 아주 간단하게 앱의 실행 상태를 감지할 수 있습니다. 이 클래스는 배터리 상태, 시스템 정보 등 다양한 앱 상태를 확인할 때도 사용됩니다.

UIApplication.shared로 앱 상태 확인하기

앱의 공유 리소스는 UIApplication.shared에 저장되어 있으며, 여기서 제공하는 applicationState 속성을 사용하면 현재 앱의 상태를 바로 알 수 있습니다.

print(UIApplication.shared.applicationState)

applicationState의 세 가지 상태 값

applicationStateState라는 이름의 열거형(Enum) 타입입니다. Apple 공식 문서에 따르면 다음과 같은 세 가지 케이스로 구성되어 있습니다.

public enum State : Int {
    case active
    case inactive
    case background
}

각 케이스가 의미하는 바는 다음과 같습니다.

  • active: 앱이 포그라운드에서 실행 중이며, 터치 이벤트 등 사용자 이벤트를 정상적으로 수신하고 있는 상태입니다.
  • inactive: 앱은 포그라운드에서 실행 중이지만, 현재 어떠한 이벤트도 수신하지 않는 상태입니다. 예를 들어 전화가 걸려오거나 알림 센터를 내려 열었을 때 해당됩니다.
  • background: 앱이 백그라운드에서 실행 중인 상태입니다.

조건문으로 앱 상태 분기 처리하기

실제 코드에서는 앱의 상태에 따라 서로 다른 동작을 수행하도록 조건문으로 처리할 수 있습니다.

let state = UIApplication.shared.applicationState
if state == .active {
    print("I'm active")
}
else if state == .inactive {
    print("I'm inactive")
}
else if state == .background {
    print("I'm in background")
}

위 코드를 viewDidLoad에서 실행하면 다음과 같은 결과를 확인할 수 있습니다.

iOS 앱의 포그라운드·백그라운드 상태를 감지하는 방법 완벽 가이드

마무리

이처럼 UIApplication.shared.applicationState 하나만으로도 앱이 포그라운드에 있는지, 백그라운드에 있는지 손쉽게 판단할 수 있습니다. 이 기능은 음악 재생, 위치 추적, 데이터 동기화 등 앱 상태에 따라 다르게 동작해야 하는 기능을 구현할 때 매우 유용하게 활용됩니다.