Background Mode란?
iOS의 앱은 기본적으로 앱이 백그라운드 상태로 전환되면 대부분의 작업이 중단된다. 그러나 특정 작업은 백그라운드에서도 실행될 필요가 있을 수 있다. 이를 가능하게 하는 것이 Background Mode이다.
Background Modes 활성화하기(Xcode)
- 프로젝트의
Signing & Capabilities 탭으로 이동
+Capability버튼을 클릭하여 Background Modes를 추가
- 필요한 백그라운드 작업 유형을 체크한다.

Background Modes 항목
- Acts as a Bluetooth LE accessorie
- 앱을 블루투스 LE 주변 기기처럼 동작하도록 설정한다.
- 다른 기기에서 이 앱을 탐색하거나 연결할 수 있도록 만든다.
- Audio, AirPlay, and Picture in Picture
- 앱이 오디오 또는 비디오를 백그라운드에서 재생할 수 있도록 허용한다.
- Background fetch
- 시스템이 주기적으로 앱을 깨워 데이터를 미리 가져오도록 허용한다.
- 시스템이 자동으로 호출하는 방식이라, 사용자가 제어할 수 있는 부분은 제한적이다.
- Background processing
- iOS 13 이후 도입된 기능
- BGTaskScheduler API를 사용해 예약된 작업을 처리할 수 있게 한다.
- 일정 시간마다 데이터를 동기화하거나, 백그라운드에서 데이터를 처리할 수 있게 한다.
- External accessory communication
- MFi(Made for iPhone) 인증을 받은 외부 하드웨어 장치와 데이터를 주고받을 수 있다.
- 블루투스 장비와 같은 외부 장치와 통신을 지속할 때 사용한다.
- Location updates
- 백그라운드에서도 위치 데이터를 계속 수집할 수 있게 해준다.
- 위치 서비스 권한도 함께 설정해야 한다.
- Push to talk
- 사용자가 버튼을 누르고 있는 동안 음성 데이터를 전송하여 실시간으로 소통할 수 있는 기능
- Remote notification
- 푸시 알림을 통해 백그라운드에서 앱을 깨워 특정 작업을 실행할 수 있도록 한다.
- Uses Bluetooth LE accessories
- 저전력 블루투스 장치와 백그라운드 상태에서도 데이터를 송수신할 수 있도록 허용한다.
- Uses Nearby Interaction
- Nearby Interaction API를 사용하여 백그라운드에서도 U1 초광대역 또는 블루투스를 활용하여 기기 간 상호작용을 가능하게 해준다.
- Voice over IP
- VoIP 앱이 수신 전화를 받을 수 있도록 네트워크 연결을 유지시켜준다.