앱 푸시 알림은 사용자와 직접 소통하는 강력한 채널입니다. 그런데 "OS에서 알림 허용 받았으니 다 보내도 되겠지"라고 생각하면 개인정보보호법 위반이 될 수 있습니다.
iOS 알림 허용과 마케팅 수신 동의는 별개의 동의입니다.
푸시 알림 동의의 두 가지 레이어
레이어 1: OS 시스템 동의 (기술적 허가)
iOS: "알림을 보내도 될까요?" 팝업 (UNUserNotificationCenter)
Android: POST_NOTIFICATIONS 권한 (Android 13+)
이 동의는 기기에서 알림을 표시할 수 있는 기술적 권한입니다. 법적 동의와는 다릅니다.
레이어 2: 마케팅 수신 동의 (법적 동의)
정보통신망법 제50조에 따른 광고성 정보 전송 사전 동의입니다. OS 시스템 동의만 받았다고 마케팅 푸시를 보낼 수 없습니다.
| 알림 유형 | OS 동의 | 마케팅 동의 | |----------|---------|------------| | 주문 확인, 배송 알림 | 필요 | 불필요 | | 친구 요청, 댓글 알림 | 필요 | 불필요 | | 할인 쿠폰, 이벤트 안내 | 필요 | 필요 | | 재입고 알림 (신청한 경우) | 필요 | 불필요 |
동의 수집 시점과 방법
언제 물어볼까?
잘못된 접근: 앱 첫 실행 즉시 OS 알림 팝업
사용자가 앱이 무엇인지도 모르는 상태에서 알림 허용을 요청하면 거부율이 높습니다. 또한 마케팅 동의를 분리해서 받을 기회를 놓치게 됩니다.
올바른 접근: 가치를 먼저 제공하고 필요한 순간에 요청
1단계: 앱 온보딩 완료
↓
2단계: "주문 상태를 실시간으로 받아보세요" 맥락 제공
↓
3단계: 인앱 프리-퍼미션 화면 (거절해도 앱 사용 가능 명시)
↓
4단계: OS 시스템 알림 팝업
↓
5단계: 마케팅 수신 동의 별도 화면 (선택)
인앱 프리-퍼미션 화면 예시
[알림 허용으로 더 빠르게]
• 주문 배송 현황 실시간 알림
• 재입고 알림 (신청한 상품)
• 문의 답변 도착 알림
[알림 허용하기] [나중에]
알림을 허용하지 않아도 모든 기능을 이용할 수 있습니다.
마케팅 푸시 동의 설계
마케팅 수신 동의는 이용약관·개인정보 동의와 반드시 분리해야 합니다.
회원가입 시 마케팅 동의 분리
□ (필수) 이용약관 동의
□ (필수) 개인정보 수집·이용 동의
□ (선택) 광고성 정보 수신 동의
- 앱 푸시 알림: 이벤트, 할인, 신기능 안내
- 이메일: 뉴스레터, 프로모션
수신 거부는 앱 설정에서 언제든지 변경할 수 있습니다.
앱 내 알림 설정 화면 (마이페이지)
사용자가 언제든지 마케팅 수신을 철회할 수 있어야 합니다.
[알림 설정]
주문/배송 알림 ●── (항상 켜짐, 필수)
문의 답변 알림 ●──
친구 활동 알림 ○──
마케팅 알림 (선택)
이벤트·할인 알림 ○── ← 언제든 OFF 가능
신기능 안내 ○──
야간 마케팅 푸시 제한
정보통신망법에 따라 야간(21:00~08:00) 광고성 정보 전송은 원칙적으로 금지입니다.
- 야간 마케팅 푸시를 보내려면 별도의 야간 수신 동의가 필요
- 주문 확인, 배송 완료 같은 거래 관련 알림은 야간에도 발송 가능
기술적 구현 예시:
def send_push_notification(user_id, message, is_marketing=False):
user = get_user(user_id)
if is_marketing:
# 마케팅 동의 확인
if not user.marketing_push_consent:
return {"skipped": "no_consent"}
# 야간 시간 확인 (KST)
kst_hour = get_kst_hour()
if 21 <= kst_hour or kst_hour < 8:
if not user.night_marketing_consent:
# 야간 전용 동의 없으면 예약 발송
schedule_for_morning(user_id, message)
return {"scheduled": "morning"}
return send_fcm(user.fcm_token, message)
개인정보처리방침 기재 사항
푸시 알림과 관련해 처리방침에 기재해야 할 내용:
■ 수집하는 개인정보
[서비스 이용 중 자동 생성]
- 기기 정보: 푸시 토큰(FCM/APNs), 기기 모델, OS 버전
- 알림 수신 설정 이력
■ 이용 목적
- 서비스 이용 관련 공지 및 알림 발송
- 광고성 정보 전송 (별도 동의한 경우에 한함)
■ 보유 기간
- 회원 탈퇴 시 즉시 파기 (단, 법정 보관 항목 제외)
푸시 토큰의 개인정보 해당 여부
FCM 토큰(Firebase Cloud Messaging)이나 APNs 토큰은 개인정보입니까?
결론: 개인정보에 해당합니다.
토큰 자체는 의미 없는 문자열이지만, 회원 ID와 결합하면 특정 개인을 식별할 수 있습니다. 따라서:
- DB에 저장 시 접근 제어 필요
- 외부 서비스(푸시 발송 솔루션)에 전달 시 처리 위탁 계약 필요
- 탈퇴 시 토큰 파기 및 FCM/APNs 등록 취소 필요
탈퇴·비활성화 시 처리
회원 탈퇴
↓
FCM/APNs 토큰 DB에서 삭제
↓
푸시 발송 솔루션(예: Firebase, OneSignal)에서 구독 취소
↓
마케팅 동의 이력 기록 후 파기
비활성 사용자(장기 미접속)의 경우: 푸시 발송 솔루션에서 만료된 토큰을 자동으로 처리하지만, 법적 파기 의무는 별도로 이행해야 합니다.
실무 체크리스트
동의 설계
- [ ] OS 알림 허용과 마케팅 수신 동의를 분리하여 받는다
- [ ] 마케팅 동의는 선택 항목으로 구분되어 있다
- [ ] 앱 설정에서 마케팅 알림을 언제든지 OFF할 수 있다
발송 제어
- [ ] 마케팅 동의 여부를 확인 후 발송한다
- [ ] 야간(21:00~08:00) 마케팅 푸시를 차단하는 로직이 있다
- [ ] 거래 알림과 마케팅 알림을 코드에서 구분하고 있다
데이터 관리
- [ ] 처리방침에 푸시 토큰 수집·이용 목적을 기재했다
- [ ] 푸시 발송 솔루션을 수탁사로 등록했다
- [ ] 탈퇴 시 토큰을 삭제하고 발송 솔루션 구독을 취소한다
PipaGuard로 푸시 알림 컴플라이언스 점검
동의 화면 설계, 야간 발송 제한, 탈퇴 처리까지 — 모바일 앱 푸시 알림 PIPA 체크리스트를 자동으로 점검받으세요.
pipaguard.vercel.app에서 무료로 시작할 수 있습니다.