iOS에서 홈 버튼 누름을 감지하는 방법
사용자가 홈 버튼을 누르는 시점을 파악하는 것은 iOS 앱 개발에서 매우 중요합니다. 홈 버튼이 눌리면 애플리케이션은 백그라운드 상태로 전환되기 때문입니다. 데이터 저장, 타이머 중지, 리소스 해제 등의 작업을 적절히 처리하려면 이 순간을 정확히 감지할 수 있어야 합니다. 이 글에서는 사용자가 홈 버튼을 눌렀을 때 콜백을 받아 처리하는 방법을 단계별로 살펴보겠습니다.
AppDelegate.swift의 생명주기 델리게이트 메서드
iOS 앱의 생명주기 이벤트는 AppDelegate.swift 파일에 정의된 델리게이트 메서드들을 통해 감지할 수 있습니다. 특히 홈 버튼 감지와 관련된 핵심 메서드는 다음 두 가지입니다.
- applicationWillResignActive(_:) — 앱이 활성(active) 상태에서 비활성(inactive) 상태로 전환되기 직전에 호출됩니다. 홈 버튼을 누르거나 전화가 걸려올 때 등이 해당됩니다.
- applicationDidEnterBackground(_:) — 앱이 실제로 백그라운드에 진입했을 때 호출됩니다. 이 시점부터 앱은 제한된 시간 동안만 코드를 실행할 수 있습니다.
구현 방법
1단계: Xcode에서 프로젝트의 AppDelegate.swift 파일을 엽니다.
2단계: applicationWillResignActive(_:) 메서드와 applicationDidEnterBackground(_:) 메서드 내부에 각각 print 문을 작성하고, 아래 이미지와 같이 중단점(breakpoint)을 설정합니다.

3단계: 애플리케이션을 빌드하고 실행합니다.
실행 결과 확인
앱이 정상적으로 실행된 후 홈 버튼을 탭하면, 디버그 콘솔에서 다음과 같은 호출 순서를 확인할 수 있습니다.
- 먼저
applicationWillResignActive가 호출됩니다. - 이어서
applicationDidEnterBackground가 호출됩니다.
설정해 둔 중단점에서 실행이 멈추는 것을 통해 두 메서드의 호출 시점을 명확하게 확인할 수 있습니다. 이 패턴을 활용하면 앱이 백그라운드로 전환되기 전에 사용자 데이터를 저장하거나, 진행 중인 작업을 일시 중지하는 등의 안정적인 생명주기 관리를 구현할 수 있습니다.