푸시 프라이머 인앱 메시지
사용자에게 푸시 권한을 요청할 기회는 한 번뿐이므로, 푸시 등록을 최적화하는 것이 푸시 메시지의 도달 범위를 극대화하는 데 매우 중요합니다. 인앱 메시지를 사용하여 네이티브 푸시 프롬프트를 표시하기 전에, 사용자가 옵트인할 경우 어떤 유형의 메시지를 받게 되는지 설명하세요. 이를 푸시 프라이머라고 합니다.

Braze에서 푸시 프라이머 인앱 메시지를 생성하려면, iOS, Android 또는 웹용 인앱 메시지를 만들 때 버튼 클릭 시 동작으로 “Request Push Permission”을 사용할 수 있습니다.
사전 요구 사항
이 기능에는 버튼 클릭 시 동작이 필요하며, 다음 최소 버전 이상에서 지원됩니다:
또한 다음 플랫폼별 세부 사항을 참고하세요:
| OS 버전 | 추가 정보 |
|---|---|
| Android 12 이하 | 푸시가 기본적으로 옵트인되어 있으므로 푸시 프라이머를 구현하는 것은 권장되지 않습니다. |
| Android 13+ | 사용자가 푸시 권한 요청을 두 번 거부하면 Android가 추가 요청을 차단합니다—Braze 푸시 프라이머 메시지도 포함됩니다. 이후 권한을 부여하려면 사용자가 기기 설정에서 앱의 푸시를 수동으로 활성화해야 합니다. |
일반 정보
- 푸시 요청은 설치당 한 번만 표시할 수 있으며, 이는 운영 체제에 의해 제한됩니다.
- 앱의 푸시 설정이 명시적으로 켜져 있거나 꺼져 있으면 요청이 표시되지 않습니다. 임시 승인이 있는 사용자에게만 표시됩니다.
- 앱의 푸시 설정이 켜져 있는 경우: 사용자가 이미 옵트인했으므로 Braze는 인앱 메시지를 표시하지 않습니다.
- 앱의 푸시 설정이 꺼져 있는 경우: 기기 설정 내에서 앱의 푸시 알림 설정으로 사용자를 리디렉션해야 합니다.
- 거부 후 재테스트: 사용자가 네이티브 요청을 거부하면 iOS는 해당 앱 설치에 대해 다시 표시하지 않습니다. 푸시 프라이머 플로우를 재테스트하려면 일반적으로 사용자가 앱을 제거 후 재설치하거나, 설정에서 앱의 알림 권한을 변경해야 합니다.
수동 코드 제거
이 튜토리얼을 사용하여 설정한 인앱 메시지는 사용자가 인앱 메시지 버튼을 클릭하면 자동으로 네이티브 푸시 요청 코드를 호출합니다. 푸시 알림 권한을 두 번 요청하거나 잘못된 시점에 요청하는 것을 방지하려면, 개발자가 기존 푸시 알림 통합을 수정하여 인앱 메시지가 사용자에게 표시되는 첫 번째 푸시 알림 프라이머가 되도록 해야 합니다.
개발팀은 앱 또는 사이트의 푸시 알림 구현을 검토하고, 푸시 권한을 요청하는 코드를 수동으로 제거해야 합니다. 예를 들어, 다음 코드에 대한 참조를 제거하세요:
requestAuthorizationWithOptions
requestAuthorization
braze.requestPushPermission()
// or
appboy.registerAppboyPushMessages()
android.permission.POST_NOTIFICATIONS
1단계: 인앱 메시지 만들기
먼저, 인앱 메시지를 만든 다음 메시지 유형과 레이아웃을 선택합니다.
메시지와 버튼 모두에 충분한 공간을 확보하려면 전체 화면 또는 Modal 메시지 레이아웃을 사용하세요. 전체 화면을 선택하는 경우 이미지가 필수입니다.
2단계: 메시지 작성하기
이제 문구를 추가할 차례입니다! 푸시 프라이머는 사용자가 푸시 알림을 켜도록 유도하기 위한 것임을 기억하세요. 메시지 본문에서 사용자가 푸시 알림을 켜야 하는 이유를 강조하는 것이 좋습니다. 어떤 유형의 알림을 보내고자 하는지, 그 알림이 어떤 가치를 제공할 수 있는지 구체적으로 설명하세요.
예를 들어, 뉴스 앱은 다음과 같은 푸시 프라이머를 사용할 수 있습니다:
Breaking news on the go! Enable push notifications to get alerts for major stories and topics that matter to you.
스트리밍 앱은 다음과 같은 문구를 사용할 수 있습니다:
Get push notifications from Movie Cannon? Notifications may include new movies, TV shows, or other notices and can be turned off at any time.
모범 사례와 추가 리소스는 커스텀 옵트인 안내 만들기를 참조하세요.
3단계: 버튼 동작 지정
인앱 메시지에 버튼을 추가하려면 두 개의 Button 블록을 메시지에 드래그하세요. 이 블록은 인앱 메시지의 기본 버튼과 보조 버튼 역할을 합니다. 또한 행을 메시지에 드래그한 다음 버튼을 행 안에 드래그하여 버튼이 (서로 위아래로 쌓이는 대신) 같은 가로 행에 배치되도록 할 수도 있습니다. 시작 버튼으로 “Allow notifications”와 “Not now”를 권장하지만, 다양한 버튼 프롬프트를 할당할 수 있습니다.
버튼 문구를 추가한 후 각 버튼의 클릭 시 동작을 지정합니다:
- Button 1: “Close Message”로 설정합니다. 이것은 보조 버튼, 즉 “Not now” 옵션입니다.
- Button 2: “Request Push Permission”으로 설정합니다. 이것은 기본 버튼, 즉 “Allow notifications” 옵션입니다.

4단계: 전달 스케줄 설정
푸시 프라이머가 적절한 시점에 전송되도록 설정하려면, 인앱 메시지를 실행 기반 메시지로 스케줄하고 커스텀 이벤트 수행을 트리거 동작으로 설정해야 합니다.
이상적인 시점은 상황에 따라 다르지만, Braze에서는 사용자가 어떤 종류의 고가치 동작을 완료할 때까지 기다릴 것을 권장합니다. 이는 사용자가 앱이나 사이트에서 가치를 느끼기 시작했음을 나타내거나, 푸시 알림이 도움이 될 수 있는 분명한 필요가 있을 때(예: 주문을 완료한 후 배송 추적 정보를 제공하고자 하는 경우)가 적절합니다. 이렇게 하면 프롬프트가 브랜드만을 위한 것이 아니라 고객에게도 유익한 것이 됩니다.

5단계: 사용자 타겟팅
푸시 프라이머 Campaign의 목표는 아직 푸시 권한을 부여하지 않은 모든 기기의 사용자에게 메시지를 표시하는 것입니다. 여기에는 처음 사용하는 사용자, 새 기기를 사용하는 기존 사용자, 또는 앱을 재설치한 사용자가 포함될 수 있습니다.

노코드 푸시 프라이머를 사용한 자동 억제: 노코드 푸시 프라이머(“Request Push Permission” 버튼 동작)를 사용하는 경우, 세분화에 푸시 구독 필터를 추가할 필요가 없습니다. SDK는 기기의 푸시 권한 상태에 따라 인앱 메시지를 자동으로 억제합니다. 각 플랫폼에서 프라이머가 표시되거나 억제되는 시점에 대한 자세한 내용은 푸시 프라이머가 표시되는 시점을 참조하세요. 여러 기기를 사용하는 사용자를 타겟팅하는 방법에 대한 자세한 내용은 여러 기기를 사용하는 사용자 타겟팅을 참조하세요.
노코드 푸시 프라이머를 사용하지 않는 경우, Foreground Push Enabled For App is false 필터를 추가하세요. 이 필터는 포그라운드 푸시 알림에 아직 옵트인하지 않은 개별 앱 설치를 식별합니다.

Push Subscription Status is not Opted In과 같은 사용자 수준 필터를 사용하면 이미 다른 기기에서 옵트인한 사용자를 제외하여, 새 기기에서 안내 메시지를 받지 못하게 됩니다.
그 외에도 가장 적절하다고 생각되는 추가 Segment를 결정할 수 있습니다. 예를 들어, 두 번째 구매를 완료한 사용자, 회원 가입을 막 완료한 사용자, 또는 일주일에 두 번 이상 앱을 방문하는 사용자를 타겟팅할 수 있습니다. 이러한 핵심 Segment의 사용자를 타겟팅하면 사용자가 옵트인하여 푸시가 활성화될 가능성이 높아집니다.
푸시 프라이머가 표시되는 시점
노코드 푸시 프라이머(“Request Push Permission” 버튼 동작)를 사용하면, Braze SDK는 기기의 푸시 권한 상태를 자동으로 확인하고 인앱 메시지를 표시할지 억제할지 결정합니다. 이 과정은 메시지가 표시되기 전에 기기 수준에서 이루어지므로, 이 동작을 제어하기 위해 추가 세분화 필터를 추가할 필요가 없습니다.
다음 표는 각 플랫폼에서 푸시 프라이머 인앱 메시지가 표시되거나 억제되는 시점을 보여줍니다.
iOS (Swift SDK)
| 인증 상태 | 프라이머 표시 여부 | 참고 |
|---|---|---|
notDetermined |
예 | 사용자가 아직 푸시 안내에 응답하지 않은 상태 |
denied |
아니요 | iOS는 네이티브 권한 안내를 한 번만 허용하므로 SDK가 프라이머를 자동 억제합니다. 거부 후 “허용”을 탭해도 네이티브 안내를 트리거할 수 없습니다. |
provisional |
예 | 기기에 임시 인증이 부여된 상태 |
ephemeral |
예 | 기기에 임시적 인증이 부여된 상태 |
authorized |
아니요 | 사용자가 이미 푸시 권한을 부여한 상태 |
Android (Android SDK)
| 상태 | 프라이머 표시 여부 | 참고 |
|---|---|---|
| Android < 13 | 아니요 | Android 12 이하에서는 OS 수준의 안내가 없습니다(푸시는 기본적으로 옵트인 상태) |
앱 targetSdkVersion < 13 |
아니요 | 앱이 런타임 권한 모델을 타겟팅하지 않는 상태 |
POST_NOTIFICATIONS 이미 부여됨 |
아니요 | 사용자가 이미 권한을 부여한 상태 |
| 영구 거부됨 | 아니요 | 사용자가 권한을 두 번(또는 그 이상) 거부했으며, shouldShowRequestPermissionRationale이 false를 반환하는 상태 |
| Android 13+, 권한 미부여, 안내 표시 가능 | 예 | 기기가 OS 권한 안내를 표시할 수 있는 상태 |
Android SDK는 OS 버전, 타겟 SDK 버전, 권한 상태, 그리고 OS가 실제로 안내를 표시할 수 있는지 여부(shouldShowRequestPermissionRationale를 통해)를 확인합니다.
웹 (Web SDK)
Notification.permission |
푸시 지원 여부 | 프라이머 표시 여부 | 참고 |
|---|---|---|---|
"default" |
예 | 예 | 사용자가 아직 권한 요청에 응답하지 않은 상태 |
"granted" |
모두 | 아니요 | 사용자가 이미 권한을 부여한 상태 |
"denied" |
모두 | 아니요 | 사용자가 알림을 차단한 상태. iOS와 달리 웹의 "denied" 상태는 브라우저 내에서 복구할 수 없으므로(설정 딥링크에 해당하는 기능이 없음) SDK가 프라이머를 억제합니다. |
"default" |
아니요 | 아니요 | 브라우저가 푸시 알림을 지원하지 않는 상태 |
여러 기기를 사용하는 사용자 타겟팅
Braze는 기기 수준이 아닌 프로필 수준에서 사용자 데이터를 수집하므로, 여러 기기를 소유한 사용자를 타겟팅하는 것은 어려울 수 있습니다. 세분화의 푸시 구독 필터는 특정 타겟 기기의 구독 상태가 아닌 단일 기기의 구독 상태를 기준으로 사용자를 포함하거나 제외합니다. 또한 iOS의 임시 상태는 복잡성을 더합니다. 이러한 기기는 기술적으로 포그라운드 푸시 토큰을 보유하지만 사용자가 명시적으로 옵트인한 것은 아니기 때문입니다.
푸시 구독 필터의 문제점
사용자가 푸시 구독 상태가 서로 다른 여러 기기를 보유한 경우, 세분화의 푸시 구독 필터가 일부 기기를 타겟팅하지 못할 수 있습니다. 다음 시나리오를 살펴보세요.
시나리오 1: 사용자가 서로 다른 플랫폼의 기기 두 대를 보유
사용자가 두 대의 기기를 보유:
- 기기 A: Android, 푸시 옵트인 상태
- 기기 B: iOS, 푸시 옵트인하지 않은 상태
작동하지 않는 Segment 필터:
Push enabled = false- 사용자가 Android 기기에서 푸시가 활성화되어 있으므로 해당 Segment에 포함되지 않습니다. Segment에 iOS 기기가 포함되지 않습니다.Push subscription status is not opted in- 사용자가 Android 기기에서 푸시가 활성화되어 있으므로 해당 Segment에 포함되지 않습니다. Segment에 iOS 기기가 포함되지 않습니다.
작동하는 Segment 필터:
Push enabled for iOS = false- 사용자가 Android 기기에서 푸시가 활성화되어 있지만 iOS 기기만 타겟팅하므로, 사용자가 해당 Segment에 포함됩니다. Segment에 iOS 기기가 포함됩니다.
시나리오 2: 사용자가 서로 다른 상태의 iOS 기기 두 대를 보유
사용자가 두 대의 iOS 기기를 보유:
- 기기 A: 푸시 옵트인 상태
- 기기 B: 임시 활성화되었지만 옵트인하지 않은 상태
작동하지 않는 Segment 필터:
Push enabled = false- 기기 A가 푸시에 옵트인되어 있으므로 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B가 포함되지 않습니다.Provisionally opted in = true- 기기 A가 완전히 옵트인되어 있어 임시 상태가 아닙니다. 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B가 포함되지 않습니다.Push enabled for app > iOS = false- 기기 A가 iOS에서 푸시에 옵트인되어 있으므로 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B가 포함되지 않습니다.Push subscription status is not opted in- 기기 A가 푸시에 옵트인되어 있으므로 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B가 포함되지 않습니다.
결과: 이러한 푸시 필터를 어떻게 조합하더라도 Segment에서 최소 하나의 기기가 제외됩니다.
시나리오 3: 사용자가 동일 OS의 기기 세 대 이상을 보유
사용자가 세 대의 기기를 보유:
- 기기 A: 푸시 옵트인 상태
- 기기 B: 푸시 옵트인하지 않은 상태
- 기기 C: 푸시 옵트인하지 않은 상태
작동하지 않는 Segment 필터:
Push enabled = false- 기기 A가 푸시에 옵트인되어 있으므로 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B와 C가 포함되지 않습니다.Push enabled for app > X = false- 기기 A가 지정된 앱에서 푸시에 옵트인되어 있으므로 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B와 C가 포함되지 않습니다.Push subscription status is not opted in- 기기 A가 푸시에 옵트인되어 있으므로 사용자가 해당 Segment에 포함되지 않습니다. Segment에 기기 B와 C가 포함되지 않습니다.
결과: 이러한 푸시 필터를 어떻게 조합하더라도 최소 하나의 기기가 타겟팅되지 않습니다.
솔루션: 노코드 푸시 프라이머 사용
권장 솔루션은 추가 푸시 상태 세분화 필터 없이 노코드 푸시 프라이머(“Request Push Permission” 버튼 동작)를 사용하는 것입니다.

자동 억제: 노코드 푸시 프라이머는 기기의 푸시 권한 상태에 따라 자동으로 억제됩니다. SDK는 메시지를 표시하기 전에 기기의 특정 푸시 인증 상태를 확인합니다. 예를 들어 iOS에서 SDK가 사용자가 이미 인증을 부여한 상태(.authorized)를 감지하면, 추가 세분화 필터 없이도 인앱 메시지를 자동으로 억제합니다. 마찬가지로 사용자가 푸시 권한을 명시적으로 거부한 경우(.denied), iOS는 네이티브 안내를 한 번만 표시하도록 허용하므로 SDK가 프라이머를 억제합니다. 프라이머는 기기가 표시하는 것이 유용한 상태(예: iOS의 notDetermined, provisional, 또는 ephemeral)에 있을 때만 표시됩니다. 플랫폼별 전체 자격 요건은 푸시 프라이머가 표시되는 시점을 참조하세요.
노코드 푸시 프라이머를 사용하면 Braze SDK에서 해당 기능이 지원된다는 장점이 있습니다. SDK가 메시지를 표시하는 특정 기기의 푸시 토큰 상태를 감지할 수 있으므로, 여러 기기를 보유한 사용자를 제외할 수 있는 프로필 수준 세분화 필터에 의존할 필요가 없습니다.
고려 사항
노코드 푸시 프라이머 필수: 자동 억제가 작동하려면 노코드 푸시 프라이머를 사용해야 합니다. “Request Push Permission” 버튼 동작 대신 커스텀 로직이나 딥링크를 설정하면, SDK는 푸시 프라이머를 표시하려는 것으로 인식할 수 없습니다. 이 경우 해당 기기의 구독 상태와 관계없이 메시지가 표시됩니다.
옵트아웃한 사용자에 대한 억제: 노코드 푸시 프라이머는 OS 수준에서 푸시 권한을 명시적으로 거부한 사용자(예: iOS .denied, 여러 번 요청 후 영구 거부된 Android, 웹 "denied")에 대해 자동으로 억제합니다. 그러나 경우에 따라 추가적인 제어가 필요할 수 있습니다. 예를 들어 Android에서 사용자가 POST_NOTIFICATIONS 권한을 영구적으로 거부하지 않고 기기 설정에서 알림을 비활성화할 수 있습니다. 이러한 사용자에 대해 프라이머를 억제하고 다른 Campaign으로 리타겟하려면 노코드 프라이머와 함께 다음 Liquid 로직을 사용하세요.
{% if targeted_device.${foreground_push_enabled} == false %}
{% abort_message('user turned off push notifications') %}
{% endif %}
- message goes here -
targeted_device Liquid 필터는 사용자 프로필이 아닌 메시지가 표시되는 기기만을 확인합니다. 해당 기기에서 foreground_push_enabled는 활성 포그라운드 푸시 토큰이 있으면 true로, 운영 체제가 푸시 알림이 비활성화되었다고 보고하면(예: 사용자가 명시적으로 끈 경우) false로 설정됩니다. 아직 푸시 권한 상태에 응답하지 않은 완전히 새로운 기기의 경우, foreground_push_enabled는 설정되지 않은 상태로 값이 없습니다. Liquid 조건이 false를 구체적으로 확인하므로, 명시적으로 옵트아웃한 기기에서만 프라이머를 억제하며, 이 알 수 없는 상태의 기기는 여전히 자격을 갖추어 푸시 프라이머를 수신할 수 있습니다.
6단계: 전환 이벤트
Braze는 전환에 대한 기본 설정을 제안하지만, 푸시 프라이머와 관련된 전환 이벤트를 설정할 수도 있습니다.