푸시 권한 프롬프트 전에 인앱 표시하기
사전 권한 인앱은 시스템 푸시 권한 프롬프트 전에 표시하는 메시지입니다. 이를 사용하여 푸시 알림이 유용한 이유를 설명한 다음, 사용자가 인앱에서 ‘예’라고 답한 후에만 권한을 요청하세요.
iOS에서는 시스템 프롬프트가 설치당 한 번만 나타납니다. 사용자가 허용 안 함을 탭하면 앱은 해당 프롬프트를 다시 표시할 수 없습니다. 사용자가 설정에서 알림을 켤 때까지 푸시는 꺼진 상태로 유지됩니다. 인앱에서 먼저 요청하면 이미 ‘예’라고 답한 사용자에게만 그 한 번의 기회를 사용하게 됩니다.
Control Panel에서 하나의 크로스 플랫폼 HTML 프롬프트를 디자인하고 iOS와 Android 모두에서 이벤트로 트리거하려면 이 가이드를 사용하세요.
다음의 경우 다른 가이드를 사용하세요:
- 팀이 앱 코드에 iOS 전용 프롬프트를 포함할 경우(Control Panel에서 편집 불가, Journey 이벤트로 시작되지 않음): iOS 푸시 입문.
- 이미 푸시를 비활성화했거나 권한을 부여하지 않은 사용자를 다시 참여시켜야 할 경우(첫 요청이 아닌 복구만 해당): 수신 거부 복구 팝업 만들기.
시작하기 전에
Anchor link toPushwoosh는 시스템 권한 대화 상자를 자체적으로 표시하지 않습니다. Control Panel에서 이를 지연시키도록 구성할 것은 없습니다. 대화 상자는 사용자가 인앱의 수락 버튼을 탭할 때만 나타납니다.
개발팀과 함께 다음 전제 조건에 대해 작업하세요:
- 앱이 더 일찍(첫 실행 포함) 푸시 권한을 요청하지 않는지 확인합니다.
- 사용자 지정 이벤트 이름과 이를 실행할 시점에 대해 합의합니다. 예를 들어 온보딩 직후에는
onboarding_completed, 사용자가 알림이 필요한 기능을 탭할 때는locked_feature_tapped와 같이 설정합니다. 팀은 해당 이름으로postEvent를 호출할 것입니다. 이벤트에 대해 자세히 알아보기.
인앱 빌드하기
Anchor link to이 가이드의 버튼은 사용자 지정 JavaScript로 실행되며, 이는 HTML 기반 인앱 템플릿에서만 작동합니다. 네이티브 인앱 템플릿은 이 코드를 실행할 수 없으므로 네이티브 인앱으로 템플릿을 빌드하지 마세요.
-
콘텐츠 → 인앱으로 이동하여 인앱 만들기를 클릭해 내장 편집기를 바로 엽니다.
-
템플릿 이름을 입력합니다.
-
오른쪽 패널에서 블록 탭을 열고 푸시 활성화를 위한 설명을 담은 텍스트 또는 제목 블록을 추가합니다.

- 수락 작업을 위한 버튼 블록과 거절 작업을 위한 다른 버튼 블록을 추가합니다. 두 버튼 모두 인앱이 로드되자마자 다른 대기 없이 JavaScript를 실행할 수 있습니다.

- 수락 버튼을 선택하고 작업 유형을 사용자 지정 Javascript로 설정합니다.
- 아래 코드만 onClick에 붙여넣습니다.
pushwoosh.registerForPushNotifications();pushwoosh.closeInApp();- 거절 버튼을 선택하고 작업 유형을 사용자 지정 Javascript로 설정합니다.
- 이것만 onClick에 붙여넣습니다:
pushwoosh.closeInApp();템플릿을 저장한 후:
- 수락 버튼: 시스템 권한 대화 상자가 나타납니다.
- 거절 버튼: 인앱이 닫히고 시스템 대화 상자가 나타나지 않습니다.

이미 수신 동의한 사용자에 대해 프롬프트 건너뛰기
Anchor link to인앱이 이미 푸시 권한을 부여한 사용자에게는 숨겨지도록 표시 조건을 추가하세요. 나중에 다른 트리거가 템플릿을 다시 표시하더라도 숨겨집니다. 푸시 동의 상태는 SDK가 기기의 시스템 알림 권한에서 설정하는 기본 불리언 태그인 푸시 알림 활성화됨에서 가져옵니다.
- 레이어 패널에서 첫 번째 블록을 클릭한 다음, Shift 키를 누른 채 다른 모든 블록을 클릭하여 전체 템플릿을 함께 선택합니다.
- 이 블록을 조건부로 표시를 켭니다. 아래에서 설정하는 규칙은 전체 선택 항목에 한 번에 적용됩니다.
- 규칙을 푸시 알림 활성화됨 is false로 설정합니다.
- 값이 알 수 없는 경우 아래에서 블록 표시를 선택합니다. 아직 태그 값이 없는 새로 설치한 경우에도 프롬프트가 표시되어야 합니다.

권한 요청 전에 인앱 트리거하기
Anchor link to아직 등록을 거치지 않은 기기에는 푸시 토큰이 없으므로 푸시 알림으로 도달할 수 없습니다. 개발팀과 합의한 사용자 지정 이벤트로 인앱을 트리거하세요.
- 개발팀에 요청하려는 순간에 합의된 이벤트 이름으로
postEvent를 호출하도록 요청하세요. - Customer Journey Builder → 캠페인 만들기로 이동하여 해당 이벤트를 수신하는 트리거 기반 진입으로 시작하세요.
- 인앱 요소를 추가하고 빌드한 템플릿을 선택합니다. Customer Journey를 통해 인앱 보내기에 대해 자세히 알아보기.
- 프롬프트를 표시할 준비가 되면 Journey를 시작하세요.
예시 시나리오: 온보딩 직후 푸시 권한 요청하기
Anchor link to튜토리얼 자체를 중단하는 대신 사용자가 온보딩을 마치는 순간에 푸시 권한을 요청하고 싶다고 가정해 보겠습니다.
- 이벤트
onboarding_completed를 만들고 개발팀이 사용자가 온보딩 흐름을 마칠 때 이를 실행하는지 확인합니다. 이벤트 만들기에 대해 자세히 알아보기 - 트리거 기반 진입을 사용하여
onboarding_completed를 Journey의 트리거로 설정합니다. - 인앱 요소를 추가하고 빌드한 사전 권한 템플릿을 선택합니다.
- Journey를 시작합니다.
온보딩을 완료하는 모든 사용자는 프롬프트를 한 번 봅니다. 이미 수신 동의한 사용자에 대해 프롬프트 건너뛰기의 표시 조건은 이미 푸시 권한을 부여한 사용자에게 다시 실행되지 않도록 합니다.
작동 확인하기
Anchor link to시스템 프롬프트는 한 번만 표시되므로 두 버튼을 모두 테스트하려면 아직 푸시를 허용하거나 거부하지 않은 두 개의 테스트 기기(또는 두 번의 새로 설치)가 필요하며, 각 버튼에 대해 하나씩 필요합니다. 각 기기에서:
- 앱에서 합의된 이벤트를 실행합니다.
- 앱을 다시 열고 Journey가 인앱을 전달하는지 확인합니다.
그런 다음:
- 첫 번째 기기에서 수락 버튼을 탭하고 시스템 권한 대화 상자가 나타나는지 확인합니다.
- 두 번째 기기에서 거절 버튼을 탭하고 시스템 대화 상자 없이 인앱이 닫히는지 확인합니다.
- 다음에 앱을 연 후, 푸시 알림 활성화됨이 각 기기의 권한 상태와 일치하는지 확인합니다.
아직 푸시가 비활성화된 사용자 세그먼트 빌드하기
Anchor link to푸시 알림 활성화됨으로 필터링하여 권한을 거부했거나 부여하지 않은 사용자를 찾습니다. 태그는 아직 푸시가 허용되지 않았을 때 false이며, 사용자가 시스템 대화 상자를 보기 전을 포함하므로 사전 권한 기기는 이미 이 세그먼트에 속합니다.
- 세그먼트 빌더에서 푸시 알림 활성화됨 태그로 필터를 추가합니다.
- 연산자를 is false로 설정합니다. 태그로 세그먼트 빌드에 대해 자세히 알아보기.
이 세그먼트를 사용하여 아직 푸시가 활성화되지 않은 사용자에게 반복적인 프롬프트를 보류하거나, 주기적인 재유도 Journey를 실행하세요. 동일한 태그를 사용한 작업 예시는 수신 거부 복구 세그먼트를 참조하세요.
- iOS 푸시 입문: 이 크로스 플랫폼 HTML 접근 방식에 대한 네이티브, iOS 전용 대안입니다.
- 수신 거부 복구 팝업 만들기: 동일한 ‘푸시 알림 활성화됨’ 태그를 사용하여 이미 푸시를 비활성화한 사용자 복구(첫 요청 아님).
- JavaScript로 인앱 만들기: 전체 JavaScript 브리지 참조.