Braze 입문 4편 — Push · In-app · Content Card · Feature Flag

2026-05-17Braze 입문에서 운영까지

Braze 입문 4편. Features & Functionality 4 기능 깊이 — Push (APNs · FCM · Web Push 차이 · rich · silent · deep link · permission 시점), In-app Message (trigger · template · 우선순위 · frequency capping), Content Card (inbox 패턴 · 4 종류 · refresh), Feature Flag (Statsig 와 차이 · Canvas 통합 · 무료/유료 한도). 채널별 선택 가이드 + 함정 + 운영 패턴까지 풀어쓴 학습 노트.

📚 Braze 입문에서 운영까지 · 4편 — Push · In-app · Content Card · Feature Flag

이 글은 Braze 입문에서 운영까지 시리즈 4편이에요. 1편 큰 그림 · 2편 5분 통합 · 3편 Identity·데이터 모델 다음 — 실제 메시지 전달의 4 기능 깊이.

이번 글의 범위

1편의 6 채널개발자 손이 가장 많이 가는 4 자리:

  1. Push Notification — APNs · FCM · Web Push 의 차이
  2. In-app Message — 앱 안 모달의 trigger · template
  3. Content Card — 인박스 패턴
  4. Feature Flag — Braze 안의 dedicated 도구

각 기능의 공식 구조 + 운영 함정 + Statsig 등 대안과 비교. 분량은 크지만 우리 stack 의 채널에 해당하는 부분만 읽어도 OK.

4 기능의 위치 — 채널별 분기

기능 사용자 위치 핵심 강점 약점
Push 모든 환경 (앱 · 브라우저) 즉시 · 광범위 권한 거부율 · spam 피로
In-app Message 앱 사용 사용자 active 상태 · 풍부 UI 비활성 사용자 못 만남
Content Card 앱 안 inbox · 영구 지속 노출 · 비긴급 사용자가 inbox 안 열면 X
Feature Flag 코드 분기 즉시 ON/OFF · 코드 없이 메시지 자체 X

상황별 함께 사용. 긴급 = Push, 사용 중 안내 = In-app, 지속 노출 = Content Card, 코드 동작 변경 = Feature Flag.

Push Notifications — 깊이

Push 의 3 환경 차이

환경 시스템 인증
iOS APNs (Apple Push Notification service) Auth key (.p8) 또는 Certificate (.p12)
Android FCM (Firebase Cloud Messaging) Server Key (legacy) 또는 Service Account
Web Service Worker + Web Push API VAPID key

여기서 시험 함정이 하나 있어요 — 각 환경 인증 방식이 완전히 다름. 한 채널 작동해도 다른 채널 별도 셋업 필요. Web Push 만 빼먹어서 웹 사용자에게 아무 메시지 안 가는 경우 흔함.

VAPID(Voluntary Application Server Identification) = 웹 푸시 서버 신원 확인 키 규격.

Push 의 Payload 구조

Braze 가 환경별 표준 payload 자동 변환. 운영자는 console 에서 콘텐츠만 작성하면 system-specific format 은 Braze 가 처리.

기본 구성:

Title: "여름 세일 시작!"
Body: "{{ ${first_name} | default: '회원님' }}님, 30% 할인"
Image: (선택, rich push)
Deep Link: myapp://sale/2026-summer
Action Buttons: ["지금 보기", "나중에"]

Rich Push — 이미지 · 비디오 · GIF

iOS: Notification Service Extension 활용
Android: BigPictureStyle · BigTextStyle
Web: image URL in service worker payload

효과 — 일반 텍스트 push 대비 engagement 30~50% ↑ (산업 평균). 단 큰 이미지 = 네트워크 사용량 + iOS 의 expiration 같은 함정.

Silent Push — 사용자 모르게

iOS: aps.content-available = 1
Android: data-only message (no notification field)

용도 — 백그라운드 데이터 sync, 위치 업데이트, cache invalidation 같은 비표시 작업.

한계 — iOS 는 silent push throttling (시스템이 빈도 제한). 과도하게 사용 X.

Action Buttons — 인터랙티브 push

"새 메시지 도착"
[답장] [무시] [읽음 표시]

각 버튼 클릭 = deep link 또는 API call. 사용자가 앱 안 열어도 행동 가능.

Deep Link

myapp://product/12345
myapp://chat/conversation/abc
https://example.com/article/567

push 탭 시 특정 화면 직접 진입. 일반 push 가 그냥 앱 열기 라면 deep link 는 목적 화면 진입 → conversion ↑.

Universal Link (iOS) · App Link (Android) 활용 — 앱 미설치 사용자웹 fallback.

Permission 시점 — 3편 Soft Prompt 재강조

3편의 패턴 3 그대로 — 앱 시작 즉시 요청 X. Soft Prompt → 가치 인식 → OS Prompt 의 3 단계.

거부율 50% → 20% 의 차이는 6개월 후 retention 에 큰 영향.

Push 의 자주 만나는 사고

사고: iOS 인증 만료

원인 — APNs Certificate (.p12) 가 연 1회 만료. 안 갱신 = 모든 iOS push 실패.

해결Auth Key (.p8) 사용 — 무기한 유효. 또는 만료 모니터링.

사고: Android Legacy Server Key 종료

원인 — Google 이 Legacy FCM API + Server Key2024년 6월 종료. Service Account 마이그레이션 안 한 회사 = push 끊김.

해결FCM v1 API + Service Account JSON 마이그레이션. Braze console 에서 새 credentials 등록.

사고: Web Push HTTPS 필수

원인HTTP 사이트 에서 Web Push 시도 → 작동 X.

해결 — HTTPS 필수 + Service Worker 의 적절한 scope.

사고: Token rotation 누락

원인 — 사용자가 앱 재설치 후 token 변경 → 오래된 token 으로 발송 = 실패.

해결3편의 token 등록 hook 매번 호출. invalid token 자동 cleanup.

In-app Messages — 깊이

In-app vs Push

항목 Push In-app Message
위치 OS 알림 · 앱 외부 모달
권한 필요 OS 권한 X (앱 사용 중 자동)
사용자 상태 active/inactive 모두 active 만
UI 풍부도 제한적 매우 풍부 (이미지 · 비디오 · 버튼)
즉시성 도착 즉시 다음 trigger 시

In-app 은 사용자가 이미 앱에 있는 시점 의 메시지. 이미 engagement 있는 상태click-through rate 높음.

Trigger 종류

In-app message 는 특정 trigger 에 노출:

Trigger 의미
Custom Event 특정 event 발생 시 (예: product_viewed 5번째)
Session Start 앱 진입 시
Purchase 결제 완료 시
Specific Screen 특정 화면 진입 시 (수동 trigger)

Display 시점 + 우선순위

여러 in-app message 가 동시 발생 조건 만족 시:

사용자가 'product_viewed' event 박음
  ↓
  Trigger 1: 신상품 안내 (우선순위 높음)
  Trigger 2: 카트 회복 (우선순위 중)
  Trigger 3: 회원 등급 안내 (우선순위 낮음)
  ↓
  → 우선순위 1 만 표시
  → 또는 1·2 표시 후 dismiss 시 3

우선순위 설계 = 메시지 피로 회피. 모든 메시지 동시 = 사용자 quit.

Template 종류

Template 표시 방식
Modal 화면 가운데 dialog (가장 흔함)
Slideup 화면 아래 슬라이드 (자연스러움)
Fullscreen 전체 화면 takeover (강한 메시지)
Custom HTML 자유 디자인 (template 한계 초과 시)

대부분 = Modal 또는 Slideup. Fullscreen 은 첫 onboarding 같은 중요한 메시지만 — 남용 시 사용자 짜증.

Click Action

각 in-app message 의 primary CTA (Call To Action) 는 네 갈래로 나뉩니다 — Deep Link 는 특정 화면 이동, URL 은 외부 브라우저, Custom Action 은 앱 안 함수 호출, Dismiss Only 는 단순 닫기.

CTA(Call To Action) = 사용자가 누를 핵심 행동 버튼.

Frequency Capping — 피로 방지

"같은 사용자에게:
  - 하루 최대 in-app message 3개
  - 같은 메시지 = 한 번만
  - 캠페인 종료 후 N일 안 = 표시 X"

Frequency Capping = 마케팅 운영의 기본 안전선. 캠페인 자체 설정 + 사용자 단위 설정 모두.

Custom HTML — 자유 디자인

Template 한계 초과 시 full HTML + CSS + JS 직접:

<!DOCTYPE html>
<html>
<head><style>...</style></head>
<body>
  <div class="modal">
    <h1>{{ ${first_name} }}님 환영합니다</h1>
    <button onclick="appboyBridge.logClick(); window.close();">시작</button>
  </div>
</body>
</html>

appboyBridge (legacy 이름) = Braze 가 iframe 안 HTML 에 주입하는 JS API. event 로깅 · 액션 트리거 가능.

In-app 의 자주 만나는 사고

사고: 메시지 안 표시

원인 — App 의 display 시점이 안 됨 (SDK 가 trigger 받고도 표시 못 함).

해결foreground 상태에서 display 활성 확인 + Braze SDK 의 setInAppMessageManagerDelegate 같은 설정.

사고: 너무 많은 in-app 표시

원인 — Frequency capping 미설정.

해결 — 캠페인별 + 사용자 단위 frequency cap.

사고: Custom HTML 의 보안

원인 — Custom HTML 안 <script>사용자 데이터 접근.

해결 — Custom HTML 은 iframe sandboxed. 민감 데이터 접근 X.

Content Cards — 인박스 패턴

Content Card 의 의미

1편의 5 핵심 개념 의 5번째 — 앱 안 inbox 메시지.

Push 와의 차이Push 는 밀어내는 메시지로 도착 즉시 사라지지만, Content Card영구 노출 이라 사용자가 dismiss 할 때까지 자리에 머무릅니다.

대표 사용처는 이번 주 신상품 안내, VIP 등급 도달 축하 + 혜택, 친구 초대 캠페인, 비긴급 알림 같은 자리예요.

Card 4 종류

종류 설명
Classic 텍스트 + 작은 아이콘
Captioned Image 큰 이미지 + 캡션
Banner 가로 banner 형식
Control Card 비표시 (A/B 실험의 control group)

Control Card 의 의미 — Content Card 켰을 때 효과 측정 의 control. card 안 본 사용자card 본 사용자 비교.

Click · Dismiss Tracking

// SDK 가 자동 추적
braze.getContentCards();          // 현재 card 목록
braze.logContentCardClick(card);  // 클릭 시
braze.logContentCardDismissal(card); // dismiss 시
braze.logContentCardImpression(card); // 표시 시

funnel 분석 자동. 어떤 card 가 어느 정도 engagement 인지.

Refresh 동작

// 명시 refresh
braze.requestContentCardsRefresh();

// 자동 — session start 시 + N 분마다

Cache 전략 — 메모리·로컬 저장에 최신 card 캐싱 하고, 연결 없을 때도 로컬 card 를 표시한 뒤, refresh 시점에 새 card 와 동기화합니다.

Custom View — UI 자유

Braze 가 기본 card 표시 UI 제공 — 단 우리 앱 디자인 시스템에 안 맞으면 custom view:

// Web 예시
const cards = braze.getContentCards();
const renderedHtml = cards.map(card => `
  <div class="our-card">
    <img src="${card.imageUrl}">
    <h3>${card.title}</h3>
    <p>${card.description}</p>
    <button onclick="braze.logContentCardClick(${card.id})">
      ${card.linkText}
    </button>
  </div>
`).join("");

Braze 의 card data + 우리 디자인 조합.

Content Card 의 자주 만나는 사고

사고: Card 의 sync 늦음

원인 — Refresh 자동 빈도 부족.

해결세션 시작 시 + 사용자 inbox 진입 시 requestContentCardsRefresh() 명시 호출.

사고: Dismiss 추적 누락

원인 — Custom view 에서 logContentCardDismissal 호출 안 함.

해결 — 모든 click · dismiss · impression 추적. funnel 분석의 기반.

Feature Flag — Braze 안의 dedicated 도구

Statsig 시리즈 3편 의 Feature Flag 와 비슷한 도구 인데 Braze 안. 두 도구 비교 가 자연스러운 질문.

Braze Feature Flag 의 핵심

코드 배포 · 앱 스토어 업데이트 없이 기능을 remote 로 enable/disable. — 공식 docs

const flag = braze.getFeatureFlag("flag_id");
if (flag.enabled) {
    // 새 기능
}

// Properties (string · boolean · number)
const colorScheme = flag.getStringProperty("theme", "default");
const isEnabled = flag.getBooleanProperty("show_banner", false);

Use Case 5종

다섯 갈래 활용처는 이렇게 정리됩니다. Gradual Rollouts 는 10% → 50% → 100% 점진 활성이고, Remote Configuration 은 앱 update 없이 promotional content 제어. A/B Testing 으로 variant 별 conversion 측정, Message CoordinationCanvas Feature Flag step 으로 기능 출시 + 마케팅 캠페인 동기, 마지막 Segmentationflag 받은 사용자 segment.

Plan 한도

Plan Active Flags Experiments
Free 10 1
Paid 110 100

SDK 최소 버전 — Swift 5.9.0+ · Web 4.6.0+ · Android 24.2.0+.

Statsig vs Braze Feature Flag — 차이

항목 Statsig Braze Feature Flag
dedicated 도구 X (Braze 의 sub feature)
무료 한도 200만 event/월 10 flag · 1 experiment
통계 도구 CUPED · Stratified · Sequential 기본 A/B
Warehouse Native X
Canvas 통합 X ✓ (가장 큰 차별)
Product Analytics 통합 ✓ (자체 6 차트) △ (Braze 의 일반 분석)
Segment 통합 X (Statsig 안) ✓ (Braze segment 와 자연)

CUPED(Controlled-experiment Using Pre-Experiment Data) = 실험 전 데이터로 분산을 줄이는 통계 기법. Warehouse Native = 데이터 웨어하우스 위에서 직접 실험을 돌리는 구조.

선택 가이드

Braze Feature Flag 권장 — 이미 Braze 운영 중 인 데다 간단한 flag 만 필요하거나, Canvas 와 통합 해서 flag 켰을 때 마케팅이 동시에 가는 그림이거나, Braze segment 와 결합 해서 쓰고 싶을 때.

Statsig (또는 다른 dedicated) 권장복잡한 실험 + 통계 도구가 필요하거나, Warehouse Native + dbt 통합이 중요하거나, 수십 ~ 수백 개 flag 를 굴려야 하거나, cross-team 으로 마케팅 외 product · engineering 모두 쓸 때.

dbt(data build tool) = SQL 기반 데이터 변환·모델링 프레임워크.

대부분 큰 회사 = 둘 다 사용. Statsig = 제품 실험 · 일반 flag, Braze = 마케팅 캠페인 연동 flag.

채널 선택 가이드 — 실전 결정

시나리오별 추천

신상품 출시 → 마케팅 캠페인:
  - Push (관심 사용자에게 즉시)
  - Email (상세 정보 + 모든 사용자)
  - Content Card (앱 안 지속 노출)

신규 사용자 onboarding:
  - In-app (사용 중 가이드)
  - Push (재방문 유도)
  - Email (상세 안내)

결제 후 follow-up:
  - SMS (즉시 영수증)
  - Email (상세)
  - In-app (다음 방문 시 추천)

비활성 사용자 win-back:
  - Push (재방문 유도)
  - Email (할인 쿠폰)
  - SMS (마지막 수단)

긴급 알림 (서비스 장애 등):
  - Push (즉시)
  - In-app (다음 진입 시)
  - SMS (정말 긴급)

채널 선택 원칙

네 가지 축으로 정리됩니다. 긴급도 는 SMS · Push > In-app > Content Card > Email 순, 콘텐츠 양 은 Email > In-app > Content Card > Push > SMS 순으로 줄어듭니다. 사용자 상태 면에서는 In-app 이 활성 사용자, Push 가 모두를 커버하고, 지속 노출 은 Content Card 가 길게 가는 반면 Push 는 짧게 끝나요.

자주 만나는 사고 — 4 기능 통틀어

사고 1: 채널 권한 잘못

원인 — Email 옵트인 사용자에게 SMS 발송.

해결channel 별 subscription state 따로 추적 + 발송 시 자동 필터.

사고 2: Frequency Cap 안 설정

원인 — 한 사용자에게 하루 push 10개 → 즉시 unsubscribe.

해결사용자 단위 + 캠페인 단위 cap. 일반적 = 일 push 3개 한도.

사고 3: Deep Link 깨짐

원인 — App 의 deep link handler지원 안 하는 path.

해결 — 가능한 모든 deep link 의 fallback 화면 정의 (home 으로 redirect).

사고 4: Push permission 거부 후 회복 X

원인 — 한 번 거부 = 영구 거부 (OS 기본).

해결Soft Prompt 권장. 거부 후 앱 안 안내 — "설정에서 알림 활성화하세요".

사고 5: In-app message vs Push 중복

원인 — 사용자가 앱 사용 중 push 받음 → 동시에 in-app message → 메시지 폭격.

해결foreground push 표시 X 옵션. 또는 in-app 만 (서버에서 사용자 active 여부 확인).

사고 6: Content Card 의 cache 부정확

원인오래된 card영원히 inbox 남음.

해결 — Card 의 expiration 설정 + 정기 refresh.

사고 7: Feature Flag 의 default value

원인getFeatureFlag("flag_id")network 실패 시 default 안전성 X.

해결default 안전한 동작 (예: 신기능 OFF) + 명시적 default.

사고 8: Multi-channel 동시 발송

원인 — Email + Push + SMS 동시 → 사용자 3 채널 메시지 동시 도착 → 짜증.

해결channel 우선순위 정의. fallback 패턴 (예: push 안 도달 시 email).

운영 권장 패턴

Pattern 1: Channel Subscription Helper

// 사용자가 채널별 동의 관리
function updateChannelPreferences(user: User, prefs: ChannelPrefs) {
    braze.getUser().setEmailNotificationSubscriptionType(
        prefs.email ? "opted_in" : "unsubscribed"
    );
    braze.getUser().setPushNotificationSubscriptionType(
        prefs.push ? "opted_in" : "unsubscribed"
    );

    // Subscription Group (SMS · marketing email 등)
    for (const [groupId, isSubscribed] of Object.entries(prefs.groups)) {
        braze.getUser().setSubscriptionGroupSubscriptionState(
            groupId,
            isSubscribed ? "subscribed" : "unsubscribed"
        );
    }
}

Pattern 2: Soft Push Prompt + Tracking

async function askForPushPermission(trigger: string) {
    // 1. Soft prompt 표시
    const userAgreed = await showSoftPromptModal({
        title: "주문 진행 상황을 알려드릴까요?",
        body: "배송 · 할인 · 한정 상품 알림",
        trigger: trigger  // "first_purchase" · "signup" 등
    });

    braze.logCustomEvent("push_soft_prompt_shown", { trigger });

    if (userAgreed) {
        braze.logCustomEvent("push_soft_prompt_agreed", { trigger });
        // 2. OS prompt
        await braze.requestPushPermission();
    } else {
        braze.logCustomEvent("push_soft_prompt_dismissed", { trigger });
    }
}

Pattern 3: In-app 우선순위 + Frequency Cap

in_app_messages:
  - id: "vip_upgrade_celebration"
    trigger: custom_event "tier_upgraded"
    priority: 100
    frequency_cap: "once_per_user"

  - id: "cart_recovery"
    trigger: session_start (with abandoned cart)
    priority: 80
    frequency_cap: "1 per day"

  - id: "new_feature_announcement"
    trigger: session_start
    priority: 50
    frequency_cap: "1 per 3 days"

높은 우선순위 = 자주 표시되는 중요한 메시지. 낮은 = 부수적 안내.

Pattern 4: Content Card 자동 cleanup

// 매일 정기 작업 (server-side)
async function cleanupExpiredCards() {
    // expired card 자동 dismiss
    const cards = await braze.getAllContentCards();
    const expired = cards.filter(c => c.expiresAt < new Date());
    for (const card of expired) {
        await braze.dismissContentCard(card.id);
    }
}

오래된 card = inbox 의 노이즈. expiration + cleanup.

Pattern 5: Feature Flag 안전한 사용

function isFeatureEnabled(flagId: string, defaultValue: boolean = false): boolean {
    try {
        const flag = braze.getFeatureFlag(flagId);

        // Braze 가 flag 못 가져온 경우 = default
        if (!flag || flag.enabled === undefined) {
            return defaultValue;
        }

        return flag.enabled;
    } catch (e) {
        // SDK error = safe default
        console.error("Feature flag error:", e);
        return defaultValue;
    }
}

// 사용
if (isFeatureEnabled("new_checkout_flow", false)) {
    showNewCheckout();
} else {
    showOldCheckout();
}

Default 안전한 동작 — 신기능은 기본 OFF, kill switch 는 기본 ON.

Pattern 6: Multi-channel 안 폭격

# 사용자 한 명에게 한 캠페인 = 한 채널만
campaign_strategy:
  - try: push (만약 권한 있음)
  - fallback: in-app (다음 세션)
  - fallback: email (push · in-app 다 실패)
  - SMS: 만 *critical urgent* 만 (별도 룰)

3 채널 동시 = 사용자 quit. cascade fallback 이 표준.

시험 직전 한 번 더 — Features 4 종 함정 압축 노트

  • 4 기능 = Push · In-app · Content Card · Feature Flag
  • 채널별 위치 = 모든 환경 / 앱 사용 중 / 앱 inbox / 코드 분기

Push

  • 3 환경 = iOS APNs · Android FCM · Web Push (Service Worker + VAPID)
  • 각 환경 별도 인증 필요
  • iOS = Auth Key (.p8 권장, 무기한) vs Certificate (.p12 연 만료)
  • Android = FCM v1 + Service Account JSON (Legacy Server Key 종료)
  • Web = HTTPS 필수
  • Rich Push = image · video · GIF (engagement 30~50% ↑)
  • Silent Push = aps.content-available = 1 (iOS) · data-only (Android), throttling 주의
  • Action Buttons = 인터랙티브 push
  • Deep Link = 목적 화면 직접 진입 (Universal Link · App Link)
  • 권한 = Soft Prompt + 가치 인식 → OS Prompt 3 단계 (거부율 50%→20%)
  • 함정 — iOS 인증 만료, FCM Legacy 종료, Web HTTPS, token rotation 누락

In-app Message

  • 앱 사용 중 모달 — 권한 X · click rate 높음
  • Trigger 종류 = Custom Event · Session Start · Purchase · Specific Screen
  • 우선순위 + Frequency Capping (피로 회피)
  • Template = Modal · Slideup · Fullscreen · Custom HTML
  • Modal/Slideup 흔함, Fullscreen 남용 X
  • Click Action = Deep Link · URL · Custom Action · Dismiss
  • Custom HTML = iframe sandboxed (보안)
  • 함정 — display 시점 안 맞음, frequency cap 누락, push 와 중복

Content Card

  • 앱 안 inbox · 영구 노출 (사용자 dismiss 까지)
  • 4 종류 = Classic · Captioned Image · Banner · Control (A/B 비표시)
  • Click · Dismiss · Impression 자동 추적
  • Refresh 자동 + 명시 requestContentCardsRefresh()
  • Cache 전략 = 로컬 + 오프라인 표시
  • Custom view 가능 (Braze data + 우리 UI)
  • 함정 — sync 늦음, dismiss 추적 누락, expiration 미설정

Feature Flag

  • Braze 안의 dedicated 도구
  • getFeatureFlag("id") + .enabled · .getStringProperty()
  • Use Case 5종 = Gradual Rollout · Remote Config · A/B · Message Coordination · Segmentation
  • Plan 한도 = Free 10 flag · 1 experiment / Paid 110 flag · 100 experiment
  • SDK 최소 = Swift 5.9 · Web 4.6 · Android 24.2
  • vs Statsig — Statsig 강 = dedicated · 통계 · Warehouse Native, Braze 강 = Canvas 통합 · segment
  • 큰 회사 = 둘 다 사용 (Statsig=실험, Braze=마케팅 연동)

4 기능 통틀어 함정

  • 채널 권한 잘못 (subscription state 추적)
  • Frequency cap 미설정 (사용자 폭격)
  • Deep link fallback 누락
  • Push permission 거부 후 회복 X (앱 안 설정 안내)
  • In-app + Push 중복 (foreground 표시 X)
  • Content Card cache 무한
  • Feature Flag default 안전성
  • Multi-channel 동시 발송 (cascade fallback 권장)

채널 선택 원칙

  • 긴급도 = SMS · Push > In-app > Content Card > Email
  • 콘텐츠 양 = Email > In-app > Content Card > Push > SMS
  • 사용자 상태 = In-app (active) vs Push (모두)
  • 지속 = Content Card vs 짧은 Push

운영 패턴

  • Channel Subscription Helper (channel 별 동의 관리)
  • Soft Push Prompt + Tracking
  • In-app 우선순위 + frequency cap
  • Content Card 자동 cleanup
  • Feature Flag 안전한 default
  • Multi-channel cascade fallback

공식 문서: Braze Feature Flags · Developer Guide Home 에서 원문을 확인할 수 있어요.

시리즈 다른 편 (앞뒤 글 모음)

이전 글:

다음 글:

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!