iOS 애플리케이션이 현재 포그라운드에서 실행 중인지, 백그라운드에 있는지 확인해야 하는 경우가 자주 있습니다. 다행히 UIApplication 클래스를 활용하면 아주 간단하게 앱의 실행 상태를 감지할 수 있습니다. 이 클래스는 배터리 상태, 시스템 정보 등 다양한 앱 상태를 확인할 때도 사용됩니다.
UIApplication.shared로 앱 상태 확인하기
앱의 공유 리소스는 UIApplication.shared에 저장되어 있으며, 여기서 제공하는 applicationState 속성을 사용하면 현재 앱의 상태를 바로 알 수 있습니다.
print(UIApplication.shared.applicationState)
applicationState의 세 가지 상태 값
applicationState는 State라는 이름의 열거형(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에서 실행하면 다음과 같은 결과를 확인할 수 있습니다.

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