푸시 도달률이 100%가 아닌 이유와 대응 전략


푸시 도달률이 100%가 아닌 이유와 대응 전략

푸시 알림을 보냈는데 사용자가 받지 못했다는 문의를 받아본 적이 있을 것이다. 실제로 푸시 알림의 도달률은 다양한 요인으로 인해 100%를 보장할 수 없다. 이 섹션에서는 그 원인들을 자세히 살펴보고 대응 방안을 정리해본다.

1. 기기 상태에 따른 제한

전원 꺼짐/비행기 모드

  • 당연하지만 기기가 꺼져있거나 비행기 모드일 때는 푸시를 받을 수 없음
  • FCM/APNS는 일정 기간(FCM 28일, APNS 8일) 메시지를 보관했다가 재전송 시도

배터리 절전 모드

  • Android Doze 모드: 화면이 꺼지고 일정 시간 움직임이 없으면 네트워크 활동 제한
  • iOS 저전력 모드: 백그라운드 앱 활동 제한으로 푸시 지연 가능
  • 제조사별 절전 모드: 삼성, 샤오미, 화웨이 등은 더 공격적인 절전 정책 적용

메모리/저장공간 부족

  • 저장공간이 부족하면 OS가 푸시 서비스를 제한할 수 있음
  • 메모리 부족 시 백그라운드 프로세스가 종료되어 푸시 수신 불가

2. 네트워크 환경 문제

네트워크 불안정

  • 지하철, 엘리베이터 등 음영 지역
  • 와이파이 <-> 셀룰러 전환 시 일시적 연결 끊김
  • 해외 로밍 중 데이터 차단 상태

방화벽/프록시 제한

  • 기업 네트워크에서 FCM/APNS 포트 차단 (FCM: 5228-5230, APNS: 5223, 443)
  • 일부 국가의 인터넷 검열 (중국의 FCM 차단 등)
  • 공용 와이파이의 포트 제한

네트워크 지연/타임아웃

  • 높은 레이턴시 환경에서 연결 타임아웃
  • 패킷 로스가 심한 환경

3. OS 정책 및 제한

iOS 제한사항

  • 하루 푸시 개수 제한은 없지만, 과도한 푸시는 차단될 수 있음
  • Silent Push는 시간당 2-3개로 제한
  • 앱이 사용자에 의해 강제 종료되면 Silent Push 수신 불가
  • 백그라운드 리프레시 비활성화 시 일부 푸시 타입 제한

Android 제한사항

  • Android 8.0+: 채널별 알림 설정으로 세분화된 제어
  • 제조사별 커스텀 OS의 추가 제한 (MIUI, OneUI 등)
  • 앱이 장시간 사용되지 않으면 자동으로 백그라운드 제한
  • High Priority 메시지 남용 시 제한 가능

4. 푸시 서비스 자체의 제한

FCM 제한

  • Collapsible 메시지는 최대 4개까지만 대기
  • 토픽 구독은 앱 인스턴스당 2000개 제한
  • 메시지 수명(TTL) 최대 28일
  • 일시적인 서비스 장애나 점검

APNS 제한

  • 페이로드 크기 4KB 제한 (VoIP는 5KB)
  • 잘못된 토큰으로 반복 전송 시 차단 가능
  • 인증서/키 만료 시 전송 실패

5. 앱/사용자 설정

사용자가 직접 차단

  • 앱 설정에서 알림 끄기
  • OS 설정에서 앱 알림 차단
  • 방해금지 모드 설정

토큰 관련 문제

  • 토큰 갱신 실패로 잘못된 토큰 사용
  • 앱 재설치 후 토큰 미갱신
  • 다중 기기 사용 시 이전 기기 토큰으로 전송

실무 대응 전략

1. 재전송 정책 수립

- Critical 알림: 3회까지 재전송 (간격: 1분, 5분, 30분)
- 일반 알림: 1회만 전송, 실패 시 앱 내 알림으로 대체
- 마케팅 알림: 재전송하지 않음

2. 대체 전달 수단 마련

  • 푸시 실패 시 SMS 발송 (중요 알림만)
  • 앱 실행 시 놓친 알림 확인 API
  • 이메일 알림 병행

3. 모니터링 및 분석

  • 푸시 전송 성공률 대시보드 구축
  • 실패 원인별 분류 및 통계
  • 디바이스별/OS버전별 도달률 분석
  • A/B 테스트로 최적 발송 시간대 파악

4. 토큰 관리 강화

- 앱 실행 시마다 토큰 유효성 체크
- 토큰 갱신 시 서버에 즉시 업데이트
- 실패한 토큰 자동 정리 (3회 실패 시 삭제)
- 마지막 성공 시간 기록

5. 사용자 교육

  • 온보딩 시 알림 허용 유도
  • 알림 설정 방법 안내 (앱 내 가이드)
  • 절전 모드 예외 설정 안내

6. 기술적 보완

  • 중요 알림은 앱 내 배지/인박스로도 표시
  • WebSocket 등 대체 실시간 통신 채널 구축
  • 주기적인 Polling으로 놓친 알림 확인

도달률 개선 체크리스트

  • 푸시 타입별 우선순위 설정 (High/Normal)
  • TTL 적절히 설정 (뉴스: 1일, 메시지: 7일 등)
  • 사용자 시간대 고려한 발송 시간 최적화
  • 페이로드 크기 최적화 (불필요한 데이터 제거)
  • 토큰 정리 자동화 (invalid token 제거)
  • 재전송 로직 구현 및 중복 방지
  • 실패 로그 수집 및 분석 체계 구축
  • 대체 알림 채널 구축 (SMS, 이메일 등)

기억해야 할 것은, 푸시는 “best effort” 서비스라는 점이다. 100% 도달을 보장할 수 없으므로, 정말 중요한 알림이라면 반드시 대체 수단을 마련해두어야 한다.



Written by@[namu]
모바일, 스마트폰, 금융, 재테크, 생활 정보 등