본문으로 건너뛰기

마케팅 푸시

Thumbnail Image

🚀 추가된 버전: SDKSDKv1.10.0 AndroidAndroidv1.10.1 iOSiOSv1.10.1
🛠️ 개선된 버전: SDKSDKv1.11.2 AndroidAndroidv1.11.3 iOSiOSv1.11.3 - 네이티브 마케팅 수신 동의 팝업, 앱 설정 화면 추가
🔔 최신화 일자: 2026-08-24

이 문서는 광고성 푸시 알림(마케팅 푸시)의 법적 요구사항과 nachocode를 활용한 구현 방법을 안내합니다.

어떤 방식으로 구현하시나요?

나쵸코드 대시보드의 광고성 푸시 설정에서 선택한 팝업 개발 방식에 따라 필요한 작업이 달라집니다.

아직 선택하지 않았다면 구현 방식 선택하기에서 두 방식을 비교해 보세요.


마케팅 푸시란?

마케팅 푸시(광고성 푸시)는 영리 목적으로 제품, 서비스, 이벤트 등을 홍보하기 위해 발송하는 푸시 알림입니다.

마케팅 푸시 예시
  • 할인 쿠폰 및 프로모션 정보
  • 이벤트 참여 유도 메시지
  • 신규 상품 출시 안내
  • 마케팅 캠페인 알림

마케팅 푸시는 정보성 푸시(주문 배송 안내, 결제 완료, 시스템 알림 등)와 구분되며,
정보통신망법에 따라 반드시 사용자의 사전 동의가 필요합니다.


정보통신망법 제50조

정보통신망 이용촉진 및 정보보호 등에 관한 법률 제50조

필수 준수 사항

제50조(영리목적의 광고성 정보 전송 제한)

① 누구든지 전자적 전송매체를 이용하여 영리목적의 광고성 정보를 전송하려는 자는 그 수신자의 명시적인 사전 동의를 받아야 한다.

② 제1항에 따른 사전 동의를 받은 자는 수신자가 언제든지 수신 거부 의사를 쉽게 표시할 수 있도록 하여야 한다.

③ 제1항에 따른 광고성 정보를 오후 9시부터 그 다음 날 오전 8시까지의 시간에 전송하려는 경우에는 제1항에 따른 사전 동의를 받을 때 별도로 야간 시간대 수신 동의를 받아야 한다.

마케팅 푸시 vs 정보성 푸시

구분마케팅 푸시 (광고성)정보성 푸시
목적상업적 홍보, 마케팅서비스 이용에 필요한 정보 제공
법적 요구사전 동의 필수 (정보통신망법 제50조)사전 동의 불필요 (서비스 이용 필수 정보)
예시할인 쿠폰, 이벤트 안내, 신상품 출시주문 배송 안내, 결제 완료, 시스템 알림
야간 전송별도 동의 필수 (21:00~08:00)제한 없음 (필요 시 전송 가능)
수신 거부언제든지 가능해야 함서비스 필수 알림은 거부 불가

법적 준수 체크리스트

필수 준수 사항

  • 사전 동의 받기: 마케팅 푸시 전송 전 반드시 사용자 동의 획득
  • 야간 푸시 별도 동의: 21:00~08:00 시간대 전송 시 별도 동의 필요
  • 명확한 동의 문구: 어떤 정보를 받게 되는지 구체적으로 설명
  • 선택적 동의: 마케팅 동의는 서비스 이용의 필수 조건이 아님을 명시
  • 수신 거부 기능: 설정에서 언제든 동의 철회 가능하도록 구현
  • 동의 기록 보관: 서비스 서버에 동의 일시 및 내역 저장 (법적 분쟁 대비)

권장 사항

  • 정보성 푸시와 구분: 시스템 알림과 마케팅 알림을 명확히 구분
  • 동의 철회 안내: 마케팅 푸시 발송 시 수신 거부 방법 안내

어떤 구현 방식을 선택하든, nachocode의 마케팅 동의 관리 구조와 정책은 동일하게 적용됩니다.
이 섹션은 [방법 A]와 [방법 B] 모두에 공통으로 해당하는 내용입니다.

게스트 vs 회원 동의

동의 주체의 구분
  • 게스트 동의 (guest): 로그인하지 않은 상태에서 해당 기기에 대한 마케팅 푸시 수신 동의
  • 회원 동의 (user): 로그인한 상태에서 해당 회원에 대한 마케팅 푸시 수신 동의

이 두 동의는 법적으로 별개이며, 각각 독립적으로 관리됩니다.

각 동의는 다음 세 가지 값으로 관리됩니다.

의미
true마케팅 푸시 수신 동의
false마케팅 푸시 수신 거부
null아직 동의 여부를 선택하지 않음

로그인 상태(게스트/회원)의 전환은 Nachocode.user.setUserId()Nachocode.user.deleteUserId()
호출을 기준으로 판단되며, 동의를 저장하는 시점의 로그인 상태에 따라 게스트 동의 또는 회원 동의로 기록됩니다.

// 비로그인 상태에서 동의 저장 → `guest` 동의로 기록
// 로그인(setUserId 호출) 후 동의 저장 → `user` 동의로 기록

야간 푸시 별도 동의

21:00 ~ 08:00 야간 시간대에 마케팅 푸시를 전송하려면 별도의 야간 마케팅 푸시 수신 동의가 필요합니다.

야간 마케팅 푸시 요구사항
  • 마케팅 푸시 동의야간 푸시 동의 모두 있어야 야간 시간대 광고성 푸시 알림 전송이 가능합니다.

야간 동의를 받는 방법은 구현 방식에 따라 다릅니다.


로그아웃, 회원 탈퇴 시 중요한 법적 원칙

로그아웃, 회원 탈퇴 시 필수 준수 사항

정보통신망법 준수를 위해 다음 규칙을 반드시 지켜야 합니다.

  1. 회원이 수신거부하면 게스트 동의도 함께 철회됩니다
  2. 로그아웃 후에는 게스트 동의 상태를 기준으로 마케팅 푸시 전송 여부 판단
  3. 게스트 동의가 거부 상태라면 로그아웃 후 마케팅 푸시 전송 금지
  4. 회원 탈퇴 시, 회원/게스트 여부에 상관없이 모든 마케팅 동의 철회

nachocode는 이러한 법적 요구사항을 자동으로 준수하도록 설계되어 있습니다.

위 원칙이 실제 호출 흐름에서 어떻게 적용되는지는 [방법 B]의 동작 시나리오에서 코드 예시로 확인할 수 있습니다.
[방법 A]에서는 나쵸코드 팝업과 앱 설정 화면에서의 사용자 선택이 동일한 역할을 하며, 상태 전환 원리는 같습니다.


nachocode가 자동으로 처리해주는 것들

위의 법적 원칙을 지키기 위한 복잡한 토픽 구독·상태 전환 로직은 nachocode가 자동으로 처리합니다.
개발자는 SDK 연동 메서드를 호출하기만 하면 되고, 사용자는 나쵸코드 팝업·앱 설정 화면에서 선택하기만 하면 됩니다.

시점트리거nachocode가 자동으로 처리하는 것
로그인setUserId()회원 상태로 전환 · 푸시 토큰 등록 · 해당 userId의 기존 동의 정보 조회 및 자동 복원
동의 변경setMarketingAllowed() / setNightAllowed()
또는 나쵸코드 팝업·앱 설정 화면 선택
회원 여부를 확인하여 마케팅 토픽 구독/구독해제 자동 처리
로그아웃deleteUserId()게스트 상태로 자동 전환 · 저장된 게스트 동의 정보 자동 조회 · user 토픽 구독해제 · guest 토픽 구독 (동의한 경우에만)
회원 탈퇴withdrawUser()nachocode 서버에서 해당 userId모든 정보 완전 삭제 (모든 디바이스의 푸시 토큰 등록 해제, 마케팅 동의·설정 삭제) · 게스트 상태로 전환 · 모든 마케팅 토픽 구독해제

로그아웃·회원 탈퇴 후에도 법적으로 올바른 동의 상태가 자동으로 유지됩니다.
개발자는 복잡한 토픽 관리 로직을 작성할 필요 없이, SDK 메서드 호출만으로 모든 것이 자동 처리됩니다.

GDPR 및 개인정보 보호법 준수

nachocode는 GDPR 및 개인정보 보호법을 준수합니다.

  • 서버 측 완전 삭제: 회원 탈퇴 시 nachocode 서버에 저장된 해당 userId의 모든 데이터가 복구 불가능하게 삭제됩니다
  • 다중 디바이스 지원: 사용자가 여러 디바이스를 사용하더라도 모든 디바이스의 데이터가 삭제됩니다
  • 법적 요구사항 충족: 탈퇴 즉시 모든 마케팅 푸시 전송이 중단되며 재가입 전까지 발송되지 않습니다

구현 방식 선택하기

nachocode는 광고성 푸시 수신 동의 팝업을 두 가지 방식으로 구현할 수 있도록 지원합니다.

대시보드 설정 경로

나쵸코드 대시보드 > 푸시 알림 > 설정 > 광고성 푸시 설정 탭 > 광고성 푸시 활성화 > 1. 팝업 개발 방식

nachocode-marketing-push-settings-00
구분[방법 A] 나쵸코드로 만들게요[방법 B] 직접 개발할게요
동의 팝업 UI대시보드에서 노코드로 제작 (팝업 / 바텀 시트 / 풀스크린)웹 프론트엔드에서 직접 개발
팝업 노출 시점대시보드에서 설정 (로그인 직후 또는 앱 실행 시)직접 제어
동의 저장·토픽 구독네이티브 레이어에서 자동 처리동의 설정 메서드 직접 호출
야간 동의 수집팝업 내 선택 항목으로 함께 수집직접 구현
수신 동의 변경 화면네이티브 앱 설정 화면 제공직접 구현 (또는 네이티브 앱 설정 화면 활용)
필요한 SDK 연동공통 SDK 연동 3가지 메서드만공통 SDK 연동 + 동의 설정·조회 메서드
필요 버전SDK v1.11.2+, 앱소스 v1.11.3+SDK v1.10.0+, 앱소스 v1.10.1+
추천 대상빠르게 도입하고 싶거나 개발 리소스가 제한적인 경우팝업 디자인, 노출 시점, 동의 항목을 세밀하게 제어해야 하는 경우
가이드 바로가기[방법 A] 나쵸코드 동의 팝업 사용하기[방법 B] 동의 팝업 직접 개발하기

어떤 방식을 선택하더라도 마케팅 동의 관리 정책과 아래의 SDK 연동공통으로 적용됩니다.


SDK 연동

어떤 방식을 선택하든, 앱은 사용자의 상태 변화(로그인·로그아웃·회원 탈퇴)를 nachocode에 알려주어야 합니다.
대시보드 광고성 푸시 설정의 설정 마무리 단계에서 안내하는 SDK 연동이 바로 이 작업입니다.

SDK 연동을 진행하지 않으면

광고성 푸시 알림이 고객에게 도착하지 않습니다.
nachocode 서버와 네이티브 레이어는 아래 메서드 호출 없이는 사용자의 로그인 상태를 스스로 알 수 없으므로, 동의 팝업 노출과 마케팅 토픽 구독이 정상적으로 처리되지 않습니다.

서비스의 해당 시점에 아래 3가지 메서드를 호출해 주세요.

시점호출 메서드설명
로그인Nachocode.user.setUserId(userId)회원 상태로 전환하고 해당 회원의 동의 정보를 동기화합니다
로그아웃Nachocode.user.deleteUserId()게스트 상태로 전환합니다
회원 탈퇴Nachocode.user.withdrawUser()모든 유저·디바이스 정보를 삭제합니다

각 호출 시 nachocode가 자동으로 처리하는 내용은 nachocode가 자동으로 처리해주는 것들을 참고하세요.

로그인 시 — setUserId()

사용자가 로그인에 성공한 직후 호출합니다.
[방법 A]를 사용하는 경우, 이 호출을 기준으로 동의 팝업이 노출됩니다.

// 로그인 핸들러에서 사용
async function handleLogin(userId) {
// 서비스 로그인 성공 후 nachocode에 사용자 ID 설정
const result = await Nachocode.user.setUserId(userId);

if (result.status === 'success') {
console.log('사용자 ID가 설정되었습니다:', userId);
} else {
console.error('사용자 ID 설정 실패:', result.message);
}
}
푸시 토큰 등록은 따로 하지 않아도 됩니다

setUserId()registerPushToken()이 수행하던 푸시 토큰 등록을 내부적으로 함께 처리합니다.
setUserId()를 사용한다면 registerPushToken()을 중복 호출하지 않는 것을 권장합니다.

자동 로그인도 잊지 마세요

앱을 다시 실행했을 때 저장된 세션으로 자동 로그인되는 경우에도 setUserId()를 호출해 주세요.
앱 실행 시마다 호출해도 문제없으며, 이미 동의 여부를 선택한 사용자에게는 팝업이 중복 노출되지 않습니다.

로그아웃 시 — deleteUserId()

사용자가 로그아웃할 때 호출합니다. 앱이 게스트 상태로 전환되며, 저장되어 있던 게스트 동의 정보를 기준으로 마케팅 푸시 수신 여부가 결정됩니다.

// 로그아웃 핸들러에서 사용
async function handleLogout() {
// 서비스 로그아웃 처리 후 nachocode에 사용자 ID 제거
const result = await Nachocode.user.deleteUserId();

if (result.status === 'success') {
console.log('사용자 ID가 삭제되었습니다.');
} else {
console.error('사용자 ID 삭제 실패:', result.message);
}
}
주의사항

명시적으로 사용자가 로그아웃 할 때뿐 아니라, 토큰, 세션 만료 등으로 인한 유저 로그아웃 시에도 반드시 deleteUserId()를 호출해서 유저 상태를 관리해주세요.

네이티브 레이어와 nachocode 측 서버에서는 해당 메서드를 호출하지 않을 경우 유저의 현재 로그인 상태를 자체적으로 알 수 없습니다.

회원 탈퇴 시 — withdrawUser()

사용자가 회원 탈퇴를 완료했을 때 호출합니다. nachocode 서버에서 해당 회원의 모든 유저 및 디바이스 정보가 완전히 삭제되고, 마케팅 푸시 전송이 즉시 중단됩니다.

// 회원 탈퇴 핸들러에서 사용
async function handleWithdraw() {
// 서비스 회원 탈퇴 처리 후 nachocode 유저 및 디바이스 정보 초기화
const result = await Nachocode.user.withdrawUser();

if (result.status === 'success') {
console.log('사용자 탈퇴가 완료되었습니다.');
// 탈퇴 완료 후 처리 (ex. 로그인 페이지로 이동)
window.location.href = '/login';
} else {
console.error('사용자 탈퇴 실패:', result.message);
}
}
복구할 수 없는 작업입니다

withdrawUser()는 마케팅 동의 정보를 포함한 모든 사용자 데이터를 영구 삭제합니다. 실행 전에 사용자에게 명확한 확인 절차를 제공하는 것을 강력히 권장합니다.

웹(서버)에서 회원 탈퇴를 처리한다면

서버에서 [DELETE] /api/app-user/v2 API를 호출하여 withdrawUser()와 동일하게 탈퇴 처리할 수 있습니다.


[방법 A] 나쵸코드 동의 팝업 사용하기

대시보드에서 나쵸코드로 만들게요를 선택하면, 광고성 푸시 수신 동의 팝업이 앱의 네이티브 레이어에서 직접 제공됩니다.
동의 팝업 UI, 동의 저장, 토픽 구독, 수신 동의 변경 화면까지 모두 nachocode가 처리하므로,
개발자는 공통 SDK 연동3가지 메서드만 연동하면 됩니다.

버전 요구사항

나쵸코드 동의 팝업은 SDKSDKv1.11.2 AndroidAndroidv1.11.3 iOSiOSv1.11.3 이상에서 지원됩니다.
이전 버전의 앱소스로 빌드된 앱에서는 팝업이 노출되지 않으니, 앱을 새 버전으로 다시 빌드해 주세요.

1단계. 대시보드에서 팝업 설정하기

대시보드의 광고성 푸시 설정은 아래 4단계로 구성됩니다.

nachocode-marketing-push-settings-01
nachocode-marketing-push-settings-02
nachocode-marketing-push-settings-03
단계설정 항목내용
1팝업 개발 방식나쵸코드로 만들게요 선택
2팝업팝업 타입(팝업 / 바텀 시트 / 풀스크린), 모서리(각진 / 보통 / 둥근), 제목·본문 등 팝업의 디자인과 문구 설정
3이벤트팝업 노출 시점 설정 — 로그인 기능 있어요(로그인 직후 노출) / 로그인 기능 없어요(앱 실행 시 노출)
4앱 설정 화면사용자가 언제든 수신 동의 여부를 변경할 수 있도록 앱 설정 화면을 앱 내 페이지에 연결 (3단계 참고)
로그인 기능이 없는 앱이라면

로그인 기능 없어요를 선택하면 앱 실행 시점에 동의 팝업이 노출되며, 동의 여부는 게스트(기기) 동의로 관리됩니다.
로그인이 없어 setUserId() 등으로 알려줄 유저 상태가 없으므로, 2단계 SDK 연동은 건너뛰고 3단계 앱 설정 화면 연결만 진행하면 됩니다.

2단계. SDK 연동 진행하기

대시보드 이벤트 단계의 이벤트 설정 마무리에서 안내하는 SDK 연동입니다.

nachocode-marketing-push-settings-02-user

나쵸코드 동의 팝업은 로그인 직후에 노출되고, 동의 상태는 로그인·로그아웃·탈퇴에 따라 게스트/회원 상태가 전환됩니다.
앱이 이러한 사용자의 상태 변화를 감지할 수 있도록, 공통 SDK 연동 섹션에 따라 아래 3가지 메서드를 연동해 주세요.

3단계. 앱 설정 화면 연결하기

정보통신망법에 따라 사용자는 언제든지 수신 거부 의사를 쉽게 표시할 수 있어야 합니다.
nachocode는 마케팅 푸시 동의와 야간 푸시 동의를 사용자가 직접 변경할 수 있는 네이티브 앱 설정 화면을 제공합니다.

nachocode-app-native-setting-view

대시보드 앱 설정 화면 단계의 체크리스트에 따라, 로그인 후 접근 가능한 페이지(마이페이지, 설정 등)에 앱 설정 화면으로 이동하는 버튼을 추가해 주세요.

nachocode-marketing-push-settings-03

연결 방법은 두 가지 중 편한 방식을 선택하면 됩니다.

방법 1. 앱 설정 화면 URL 연결 (노코드)

대시보드에서 제공하는 앱 설정 화면 URL을 복사하여 버튼의 링크로 삽입합니다.

  1. 대시보드 4. 앱 설정 화면 단계에서 앱 설정 화면 URL 복사
  2. 로그인으로 접근 가능한 페이지에 버튼 추가
  3. 버튼에 복사한 앱 설정 화면 URL 삽입
<!-- ex. 마이페이지의 '앱 설정' 버튼 -->
<a href="https://cdn.nachocode.io/nachocode/client-widget/open-app-setting">
앱 설정
</a>

방법 2. SDK 메서드 호출

Nachocode.setting.openAppSettingView()를 호출하면 동일한 네이티브 앱 설정 화면이 열립니다.

// '앱 설정' 버튼 클릭 시 네이티브 앱 설정 화면 열기
document.getElementById('app-setting-button').addEventListener('click', () => {
Nachocode.setting.openAppSettingView();
});
앱 환경에서만 노출하기

앱 설정 화면은 nachocode 앱 환경에서만 동작합니다.
웹 브라우저에서는 버튼을 숨기고 싶다면 Nachocode.env.isApp()으로 앱 환경 여부를 확인하세요.

전체 동작 흐름

[사용자 로그인]
└─ 서비스: Nachocode.user.setUserId(userId) 호출
└─ nachocode: 회원 상태 전환 → 푸시 토큰 등록 → 기존 동의 정보 동기화
└─ 설정한 노출 시점에 네이티브 동의 팝업 노출
├─ 동의하기 → 동의 저장 + 마케팅 토픽 구독 (자동)
└─ 거부하기 → 거부 저장 + 마케팅 토픽 구독 해제 (자동)

[수신 동의 변경]
└─ 사용자: 앱 설정 화면에서 마케팅/야간 푸시 동의 변경 (자동 반영)

[사용자 로그아웃]
└─ 서비스: Nachocode.user.deleteUserId() 호출
└─ nachocode: 게스트 상태 전환 → 게스트 동의 기준으로 토픽 재구성 (자동)

[회원 탈퇴]
└─ 서비스: Nachocode.user.withdrawUser() 호출
└─ nachocode: 모든 유저·디바이스 정보 삭제 → 마케팅 푸시 전송 중단 (자동)
여기까지 하면 끝입니다

[방법 A] 를 사용하는 경우 [방법 B]의 setMarketingAllowed(), setNightAllowed() 등 동의 설정 메서드는 직접 호출할 필요가 없습니다.

서비스 화면에서 현재 동의 상태를 표시하고 싶다면, getMarketingPreference()조회는 언제든 가능합니다.


[방법 B] 동의 팝업 직접 개발하기

대시보드에서 직접 개발할게요를 선택하면, 동의 팝업 UI를 서비스에서 직접 개발하고
사용자의 로그인 상태광고성 푸시 수신 동의 여부를 SDK를 통해 nachocode에 알려주어야 합니다.

nachocode-marketing-push-settings-00-self
동의 여부를 SDK로 전달하지 않으면

직접 개발한 팝업에서 사용자가 동의하더라도, 아래 동의 설정 메서드로 그 결과를 전달하지 않으면 nachocode는 해당 사용자를 마케팅 푸시 대상으로 인식하지 못합니다.

SDK 연동 체크리스트

  • 동의 팝업 UI 개발: 법적 준수 체크리스트의 문구 요건(명확한 동의 문구, 선택적 동의 명시, 야간 동의 별도 항목)을 반영
  • 유저 상태 연동: 공통 SDK 연동의 3가지 메서드(setUserId() / deleteUserId() / withdrawUser()) 호출
  • 동의 여부 설정: 팝업에서 선택한 결과를 nachocode에 전달 (동의 설정하기)
  • 동의 상태 조회: 현재 상태를 조회하여 팝업 노출 여부 판단 (동의 상태 조회하기)
  • 수신 거부 기능: 설정 화면에서 언제든 동의를 변경할 수 있도록 구현 (직접 구현 또는 openAppSettingView() 활용)

팝업에서 사용자가 선택한 동의 결과를 nachocode에 전달합니다.

개별 설정 방식

// 마케팅 푸시 수신 동의 설정
await Nachocode.push.setMarketingAllowed(true);

// 야간 푸시 수신 동의 설정
await Nachocode.push.setNightAllowed(true);

일괄 설정 방식 (v1.10.2+)

// 마케팅 푸시와 야간 푸시 동의를 한 번에 설정
const result = await Nachocode.push.setMarketingPreference({
marketingAllowed: true,
nightAllowed: true,
});

if (result.status === 'success') {
console.log('마케팅 수신 동의가 설정되었습니다.');
} else {
console.error('설정 실패:', result.message);
}

동의를 저장하는 시점의 로그인 상태에 따라 게스트 동의 또는 회원 동의로 기록됩니다. (게스트 vs 회원 동의 참고)

저장된 동의 상태를 조회하여 팝업 노출 여부를 판단하거나, 서비스 화면에 표시할 수 있습니다.

개별 조회 방식

const marketingAllowed = await Nachocode.push.getMarketingAllowed();

console.log('게스트 동의:', marketingAllowed.guest); // boolean | null
console.log('회원 동의:', marketingAllowed.user); // boolean | null

일괄 조회 방식 (v1.10.2+)

// 마케팅 푸시와 야간 푸시 동의를 한 번에 조회
const preference = await Nachocode.push.getMarketingPreference();

console.log('게스트 마케팅 동의:', preference.guest.marketingAllowed); // boolean | null
console.log('게스트 야간 동의:', preference.guest.nightAllowed); // boolean | null
console.log('회원 마케팅 동의:', preference.user.marketingAllowed); // boolean | null
console.log('회원 야간 동의:', preference.user.nightAllowed); // boolean | null

값의 의미(true / false / null)는 게스트 vs 회원 동의를 참고하세요.

구현 예시

// 1. 로그인 성공 후 사용자 ID 설정 (푸시 토큰 등록 포함)
await Nachocode.user.setUserId(userId);

// 2. 현재 회원의 동의 상태 조회
const preference = await Nachocode.push.getMarketingPreference();

// 3. 아직 동의 여부를 선택하지 않은 경우에만 직접 개발한 팝업 노출
if (preference.user.marketingAllowed === null) {
showMarketingConsentPopup({
// 4. 팝업에서 선택한 결과를 nachocode에 전달
onSubmit: async ({ marketingAllowed, nightAllowed }) => {
const result = await Nachocode.push.setMarketingPreference({
marketingAllowed,
nightAllowed,
});

if (result.status === 'success') {
console.log('마케팅 수신 동의가 설정되었습니다.');
} else {
console.error('설정 실패:', result.message);
}
},
});
}

아래 시나리오는 로그아웃, 회원 탈퇴 시 중요한 법적 원칙이 실제 호출 흐름에서 어떻게 적용되는지 보여줍니다.

시나리오 1: 비로그인 동의 → 로그인 후 거부
// 1. 비로그인 상태에서 동의
await Nachocode.push.setMarketingAllowed(true);
// 결과: { guest: true, user: null }

// 2. 로그인
await Nachocode.user.setUserId('user123');

// 3. 로그인 상태에서 거부
await Nachocode.push.setMarketingAllowed(false);
// 결과: { guest: false, user: false } ← 게스트 동의도 함께 철회됩니다.

// 4. 로그아웃 후
await Nachocode.user.deleteUserId();
// 게스트 동의가 false이므로 마케팅 푸시 전송 불가
시나리오 2: 비로그인 거부 → 로그인 후 동의 → 로그아웃
// 1. 비로그인 상태에서 거부
await Nachocode.push.setMarketingAllowed(false);
// 결과: { guest: false, user: null }

// 2. 로그인 후 동의
await Nachocode.user.setUserId('user123');
await Nachocode.push.setMarketingAllowed(true);
// 결과: { guest: false, user: true }

// 3. 로그아웃 후
await Nachocode.user.deleteUserId();
// 게스트 동의가 false이므로 마케팅 푸시 전송 불가
시나리오 3: 비로그인 동의 → 로그인 후 동의 → 회원 탈퇴 (v1.10.4+)
// 1. 비로그인 상태에서 동의
await Nachocode.push.setMarketingAllowed(true);
// 결과: { guest: true, user: null }

// 2. 로그인 후 동의
await Nachocode.user.setUserId('user123');
await Nachocode.push.setMarketingAllowed(true);
// 결과: { guest: true, user: true }

// 3. 회원 탈퇴 후
await Nachocode.user.withdrawUser();
// 결과: 현재 디바이스 { guest: null, user: null }
// nachocode 서버에서 'user123'의 모든 유저 및 디바이스 정보 완전 삭제
// 'user123'으로 로그인된 모든 디바이스에 데이터 초기화 전파

마케팅 푸시 전송 방법

1. 선행 작업: 마케팅 동의 관리 연동

SDK v1.10.0앱소스 v1.10.1부터 마케팅 동의 관리 기능이 지원됩니다.

마케팅 푸시는 마케팅 수신에 동의한 사용자에게만 전송되므로,
전송에 앞서 SDK 연동방법 A 또는 방법 B의 동의 관리 연동이 완료되어 있어야 합니다.

2. 대시보드에서 광고성 푸시 전송하기

나쵸코드 대시보드에서 별도의 개발 없이 광고성 푸시 알림을 직접 작성하여 전송할 수 있습니다.

대시보드 전송 경로

나쵸코드 대시보드 > 푸시 알림 > 전송

nachocode-marketing-push-send-form

전송 폼에서 메세지 유형광고성으로 선택하면 마케팅 푸시로 전송됩니다.

항목설명
메세지 유형광고성 선택 — 마케팅 수신에 동의한 사용자에게만 전송됩니다
제목정보통신망법에 따른 광고 표기 의무를 준수하도록 제목에 (광고) 표기가 포함됩니다
내용수신거부 방법 안내를 반드시 포함해 주세요 — 예) 수신거부: [설정] > [푸시 알림]에서 변경 가능 (무료)
야간 시간대 전송

마케팅 푸시 동의야간 푸시 동의가 모두 있어야 21:00~08:00 야간 시간대 광고성 푸시 알림 전송이 가능합니다.
자세한 내용은 야간 푸시 별도 동의를 참고하세요.

전송한 푸시 알림의 결과는 푸시 알림 > 내역에서 확인할 수 있습니다.

향후 제공 예정
  • nachocode API: 서버에서 직접 마케팅 푸시를 발송할 수 있는 API 또는 옵션 제공

SDK

API

릴리즈 노트

  • SDK v1.11.2 - openAppSettingView() 추가, setUserId() 푸시 토큰 등록 내부 처리
  • Android v1.11.3 / iOS v1.11.3 - 네이티브 마케팅 푸시 동의 팝업, 앱 설정 화면 추가