- 기술적으로는 백그라운드 알림(Background Notifications)이 정확한 명칭.
- 사용자가 모르게 백그라운드에서 앱을 깨워 데이터를 업데이트하기 때문에 '사일런트(Silent)'라는 별칭
- 사일런트 푸시: iOS (APNs)
content-available: 1 기반 푸시, Android (FCM) 공식용어 없음.
- 알림 UI 없이 앱 로직 실행 목적
- 실행 보장은 앱 상태에 따라 다름
- 안드로이드는 alert값이 빈값일 경우 알림을 띄우지 말고 사일런트 푸시 로직 처리 해야함.
- 사용자 인지 불가: 알림창(Banner), 사운드, 배지 업데이트가 발생하지 않음.
- 앱 깨우기: 앱이 백그라운드에 있거나 종료된 상태(Suspended)일 때, 시스템이 앱을 잠시 깨워 약 30초간의 실행.
- 목적: 사용자가 앱을 열기 전에 최신 데이터를 미리 다운로드하거나, 내부 DB를 동기화하는 용도로 사용됨.
- 실행 보장 안됨
- 네트워크/배터리 상태에 따라 무시될 수 있음
- 너무 자주 보내면 iOS가 자동으로 차단
| 앱 상태 |
전달 |
실행 보장 |
의미 |
| Active |
항상 |
보장 |
발송앱 포그라운드에서 사용 중 |
| Inactive |
항상 |
보장 |
포그라운드이지만 이벤트를 못 받는 짧은 상태 |
| Background |
조건부 |
미보장 |
백그라운드 실행 중 |
| Suspended |
매우 제한 |
미보장 |
메모리엔 있으나 실행 안 됨 |
| Terminated |
거의 없음 |
불가 |
완전 종료 |
- 사일런트 푸시는 실행 요청이지 실행 보장이 아님
- Background 실패는 정상 케이스
- 핵심 비즈니스 로직 사용 금지
- 종료(Terminated) 상태는 대상 아님.
POST /api/extension/push/backGroundPush.ums HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
Content-Length: 176
SENDERID=SENDSYSTEM01&TARGET_USER_TYPE=NM&REQ_TRAN_TYPE=BATCH&APP_ID=com.mium2.push.democlient&CUIDS=%7B%22APNS_DEMO01%22%3A%5B%22%22%2C%22%ED%99%8D%EA%B8%B8%EB%8F%991%22%5D%7D
curl --location 'http://localhost:8080/api/extension/push/backGroundPush.ums' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'SENDERID=SENDSYSTEM01' \
--data-urlencode 'TARGET_USER_TYPE=NM' \
--data-urlencode 'REQ_TRAN_TYPE=BATCH' \
--data-urlencode 'APP_ID=com.mium2.push.democlient' \
--data-urlencode 'CUIDS={"APNS_DEMO01":["","홍길동1"]}'