> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 푸시 권한 요청

> 전략적 타이밍, 인앱 소프트 프롬프트, iOS 임시 알림으로 iOS, Android, Huawei에서 푸시 알림 옵트인율을 높이세요.

푸시 권한 프롬프트는 앱이 푸시 알림을 보낼 수 있는지 사용자에게 묻는 운영 체제 대화 상자입니다. 사용자의 응답에 따라 배너로 나타나고, 잠금 화면에 표시되고, 소리를 재생하는 알림을 전달할 수 있는지가 결정됩니다.

<Frame caption="시스템 권한 프롬프트를 표시하는 iOS 및 Android 기기.">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/7ace2bd5abf90a044c363ec9acb227467b62a7f49fdf0dd2922280dc188f4973-a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=381c6c0ecf9c24cda0e9153fc582e319" alt="나란히 표시된 iOS와 Android의 시스템 권한 프롬프트" width="1920" height="1080" data-path="images/docs/7ace2bd5abf90a044c363ec9acb227467b62a7f49fdf0dd2922280dc188f4973-a90c2cc443f5fe9e7c80368c680a16cf1ca6203f7b28a0a6eec212add8510f80-Untitled_design_11.png" />
</Frame>

프롬프트를 하나의 전략으로 다루세요. 시스템 프롬프트는 표시 횟수가 제한되어 있습니다. **iOS에서는 한 번**, **Android(Google과 Huawei)에서는 두 번**만 표시할 수 있습니다. 사용자가 모든 시도를 거부하면 시스템 설정에서 수동으로 알림을 다시 활성화해야 합니다. 타이밍이 잘못된 프롬프트는 구독자를 영구히 잃게 만들 수 있으며, 도달 가능한 오디언스는 실행하는 모든 푸시 캠페인의 ROI를 좌우하는 가장 큰 요소입니다.

[Apple](https://developer.apple.com/design/human-interface-guidelines/managing-notifications)과 [Google](https://developer.android.com/training/permissions/requesting) 모두 권한을 요청하기 전에 알림의 가치를 설명할 것을 권장합니다. 컨텍스트가 없으면 사용자는 거부할 가능성이 더 높으며, iOS에서는 한 번 거부된 프롬프트를 다시 표시할 수 없습니다.

이 가이드는 모바일 앱 푸시를 다룹니다. 웹 푸시에 대해서는 [웹 푸시 권한 프롬프트](./permission-requests)를 참조하세요.

## 높은 옵트인율을 위한 전략

푸시 옵트인율은 시스템 프롬프트 자체의 문구보다 *언제*, *어떻게* 요청하는지에 훨씬 더 크게 좌우됩니다. 프롬프트를 전략으로 다루는 앱은 첫 실행 시점에 프롬프트를 표시하는 앱을 지속적으로 능가합니다. 아래 원칙들은 그 구성 요소이며, 이어지는 [예시 전략](#example-onboarding-opt-in-strategy)은 이러한 요소를 어떻게 구체적인 플레이북으로 결합하는지 보여줍니다.

### 원칙

* **가치 있는 순간 이후에 요청하세요.** 사용자가 알림받을 만한 가치가 있는 무언가를 방금 경험했을 때까지 기다리세요. 온보딩 완료, 항목 저장, 토픽 팔로우, 주문 완료, 첫 세션 종료 같은 시점입니다. 사용자가 앱이 무엇을 하는지 이해하기도 전에 첫 실행에서 프롬프트를 표시하는 것이 낮은 옵트인율의 가장 큰 원인입니다.
* **iOS에서는 임시 알림으로 시작하세요.** [임시 알림](#use-ios-provisional-notifications)은 어떤 프롬프트도 없이 알림 센터로 조용히 전달되므로, 사용자는 가상의 설명이 아닌 실제 콘텐츠를 기반으로 유지 여부를 결정합니다. iOS에서 종종 가장 높은 전환율을 보이는 경로이므로 기본 시작점으로 삼아야 합니다.
* **인앱 소프트 프롬프트로 가치를 설명하세요.** 소프트 프롬프트는 어떤 종류의 알림을 보낼 것이며 왜 중요한지 사용자에게 알려주는 OneSignal 인앱 메시지입니다. 소프트 프롬프트를 닫아도 시스템 프롬프트 시도 횟수가 소진되지 않으므로, 아직 준비되지 않았던 사용자에게 다시 요청할 수 있습니다.
* **시스템 프롬프트가 아니라 소프트 프롬프트를 거부한 사용자에게 다시 요청하세요.** 소프트 프롬프트가 일정 주기(예: 2주마다)로 다시 표시되도록 구성하세요. 아직 준비되지 않았던 사용자는 시스템 프롬프트 제한을 소진하지 않고도 다시 한 번 기회를 얻습니다.
* **문구와 타이밍을 반복 개선하세요.** 소프트 프롬프트를 배포하고, 메시지 리포트에서 전환율을 확인한 다음, 트리거, 문구, 빈도를 조정하세요. 타이밍과 문구의 작은 변경만으로도 옵트인율이 수십 퍼센트포인트 움직이는 경우가 흔합니다.

### 예시: 온보딩 옵트인 전략

이 예시는 iOS에서 즉각적인 도달을 위한 임시 알림과, 가치 있는 순간에 표시되는 소프트 프롬프트를 결합하여 완전한 옵트인으로 전환합니다. 시작점으로 삼되 알림 유형과 가치 있는 순간을 앱에 맞게 조정하세요. Android 및 Huawei 앱의 경우 1단계는 건너뛰고 2단계부터 시작하세요.

**1단계: iOS에서 조용한 도달**

1. OneSignal 대시보드의 **Settings > Apple iOS > Advanced Configuration > Enable iOS 12 direct to history**에서 임시 승인을 활성화하세요.
2. 사용자의 첫 주 동안 2\~3개의 고품질 알림을 전송하세요. 개인화된 추천, 속보 알림, 주간 다이제스트처럼 구독의 가치를 보여주는 콘텐츠를 선택하세요. 사용자는 프롬프트 없이 알림 센터에서 이를 조용히 받게 됩니다.

**2단계: 가치 있는 순간에 전환**

1. **Messages > In-App**에서 사용자가 이미 경험한 가치를 언급하는 소프트 프롬프트를 만드세요. 헤드라인 예시: "잠금 화면에서 속보 알림을 받아보세요."
2. 오디언스를 **Show to all users**로 설정하세요. **Push Permission Prompt** 클릭 액션이 자동으로 미구독 사용자에게만 필터링합니다.
3. 신호가 강한 이벤트에서 메시지를 트리거하세요. 임시 알림 열기 또는 반응, 토픽 팔로우, 장바구니에 항목 추가, 5분간의 세션 시간 등입니다.
4. CTA 버튼에 **Push Permission Prompt** 클릭 액션을 추가하세요.
5. 일정을 **Multiple times**로 설정하고, 사용자당 최대 표시 횟수를 `20`, 표시 사이 간격을 `2 weeks`로 설정하세요(약 10개월 동안 재프롬프트).

**3단계: 측정과 반복**

1. 1\~2주 후, 메시지 리포트에서 프롬프트에서 옵트인까지의 전환율을 확인하세요.
2. [SDK 리스너](#track-push-permissions-and-prompt-results)로 전체 퍼널을 계측하세요. 소프트 프롬프트 클릭, 닫기, 시스템 프롬프트 결과를 추적하고 그 이벤트를 분석 도구로 전달하세요.
3. 수치를 기반으로 한 번에 하나의 변수(트리거 이벤트, 헤드라인, CTA 문구, 표시 사이 간격)만 조정하세요.

<Tip>
  사용자가 임시 알림을 열거나 반응한 직후에 소프트 프롬프트를 트리거하세요. 이미 알림에서 가치를 경험했기 때문에 시스템 프롬프트에서 "Allow" 비율이 크게 상승합니다.
</Tip>

***

## 접근 방식 선택

OneSignal로 푸시 구독자 기반을 늘리는 방법은 세 가지가 있습니다. 대부분의 iOS 앱은 임시 알림과 인앱 소프트 프롬프트를 결합해야 하며, 대부분의 Android 앱은 소프트 프롬프트부터 시작해야 합니다.

| 접근 방식                                           | 플랫폼                  | 작동 방식                                                                                                                                                                                    | 사용 시점                                                              |
| ----------------------------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| **인앱 소프트 프롬프트 (권장)**                            | iOS, Android, Huawei | **Push Permission Prompt** 클릭 액션이 포함된 OneSignal 인앱 메시지를 구성합니다. 버튼을 탭하면 시스템 프롬프트가 표시됩니다. 인앱 메시지를 닫아도 시도 횟수가 소진되지 않으므로 나중에 다시 요청할 수 있습니다.                                                  | 기본 선택. 코드 릴리스 없이 프롬프트를 디자인, 예약, 타겟팅, 재표시할 수 있습니다.                  |
| **프로그래밍 방식 프롬프트**                               | iOS, Android, Huawei | 앱 코드에서 [`requestPermission()`](./mobile-sdk-reference#requestpermission-fallbacktosettings-push) 또는 [`optIn()`](./mobile-sdk-reference#optout-optin-optedin)을 호출합니다. 시스템 프롬프트가 즉시 나타납니다. | 앱이 트리거를 제어하는 사용자 지정 흐름. 기본 설정 센터, 프로필 화면, 프롬프트가 정당화되는 인앱 이벤트 등입니다. |
| **[임시 알림](#use-ios-provisional-notifications)** | iOS                  | OneSignal 대시보드에서 활성화합니다. 사용자는 어떤 프롬프트도 없이 알림 센터에서 조용한 알림을 받고, **Keep**을 탭하여 전체 구독자로 전환합니다.                                                                                               | iOS 온보딩과 낮은 마찰의 도달. 소프트 프롬프트와 결합하여 조용한 구독자를 전체 푸시 구독자로 전환하세요.      |

세 가지 모두 결합할 수 있습니다. iOS에서 자주 사용되는 고성능 패턴은 즉각적인 조용한 도달을 위해 임시 알림을 활성화하고, 가치 있는 순간에 소프트 프롬프트를 표시하며, 원할 때 옵트인하려는 사용자를 위해 기본 설정 센터에서 프로그래밍 방식 프롬프트를 노출하는 것입니다.

<Frame caption="시스템 권한 프롬프트로 이어지는 인앱 소프트 프롬프트.">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a6d382ca2711ba0e9f013bebe5c420d129fbfbc5ef0b2fbd9cb4bef78c7e9480-mobile-push-optimize-reach.webp?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=bfbc66b313bd85f944476e8363f1d093" alt="시스템 푸시 권한 프롬프트로 이어지는 인앱 메시지" width="1600" height="1058" data-path="images/docs/a6d382ca2711ba0e9f013bebe5c420d129fbfbc5ef0b2fbd9cb4bef78c7e9480-mobile-push-optimize-reach.webp" />
</Frame>

***

## 사전 요구 사항

* [OneSignal 계정](https://dashboard.onesignal.com).
* [OneSignal SDK가 설치되고](./mobile-sdk-setup) `OneSignalInAppMessages` 패키지가 활성화된 모바일 앱.

***

## 인앱 푸시 권한 프롬프트 설정

<Steps>
  <Step title="자동 권한 프롬프트 제거">
    시작하기 전에 앱이 이미 시스템 권한 프롬프트를 자동으로 트리거하고 있지 않은지 확인하세요.

    * 앱 시작 시 호출되는 `requestPermission()` 또는 `optIn()` 호출을 모두 제거하세요.
    * `requestAuthorizationWithOptions`에 대한 네이티브 iOS 호출과 푸시 토큰을 직접 생성하는 모든 코드를 제거하세요.
    * `requestPermissions`에 대한 Android 호출과 푸시 토큰을 직접 생성하는 모든 코드를 제거하세요.
  </Step>

  <Step title="인앱 메시지 생성 또는 편집">
    **Messages > In-App**으로 이동한 다음 다음 중 하나를 수행하세요.

    * 기본 **Push Permission Prompt** 템플릿을 편집하거나,
    * **New Message**를 클릭하여 직접 만드세요.

    <Frame caption="기본 Push Permission Prompt 템플릿을 편집하거나 직접 만드세요.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=80dd758e2587507b2052b2e20df0409e" alt="Push Permission Prompt 템플릿이 표시된 OneSignal 인앱 메시지 목록" width="2616" height="1356" data-path="images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt.jpg" />
    </Frame>

    오디언스를 **Show to all users**로 설정하세요. OneSignal은 **Push Permission Prompt** 클릭 액션에 따라 아직 푸시를 구독하지 않은 사용자에게만 이 메시지를 자동으로 필터링합니다.

    <Frame caption="오디언스를 'Show to all users'로 설정하세요. Push Permission Prompt 클릭 액션이 자동으로 미구독 사용자에게 필터링합니다.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt-show-to-all-users.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=e9b2b23e4e7663ee7799fd4a92dbe473" alt="모든 사용자에게 표시하도록 구성된 오디언스 설정" width="1766" height="678" data-path="images/push/prompt-for-push-set-up-an-in-app-push-permission-prompt-show-to-all-users.jpg" />
    </Frame>
  </Step>

  <Step title="메시지 디자인 사용자 지정">
    앱에 맞게 모양, 느낌, 문구를 개인화하세요. 어떤 종류의 알림을 받게 될지, 왜 가치가 있는지 사용자에게 알려주세요.

    자세한 내용은 [드래그 앤 드롭으로 인앱 메시지 디자인하기](./design-your-in-app-message) 또는 [HTML로 인앱 메시지 디자인하기](./design-your-in-app-message-with-html)를 참조하세요.

    <Frame caption="푸시 옵트인 메시지를 만들기 위한 인앱 메시지 블록 편집기.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/push-customize-the-message-design.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=df030196ba721eedfd4c1ad5af0fa3cd" alt="푸시 옵트인 프롬프트가 있는 인앱 메시지 블록 편집기" width="2604" height="1770" data-path="images/push/push-customize-the-message-design.jpg" />
    </Frame>
  </Step>

  <Step title="Push Permission Prompt 클릭 액션 추가">
    메시지의 버튼이나 이미지에 **Push Permission Prompt** 클릭 액션을 추가하세요. 탭하면 시스템 권한 프롬프트가 나타납니다.

    <Frame caption="버튼에 Push Permission Prompt 클릭 액션 추가.">
      <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/push-add-the-push-permission-prompt-click-action.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=8ed4971452754851f4ff064121bcb900" alt="Push Permission Prompt이 선택된 클릭 액션 드롭다운" width="2604" height="1770" data-path="images/push/push-add-the-push-permission-prompt-click-action.jpg" />
    </Frame>

    <Frame caption="iOS에서 클릭 액션에 의해 트리거된 시스템 권한 프롬프트.">
      <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e18f7f87a5efaaa5284cf19be8de863c3833379d37b095aef9d015835a694485-prompt-2.webp?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=a484b1c75320beefb83bde20c443f789" alt="iOS 네이티브 푸시 알림 권한 프롬프트" width="1560" height="804" data-path="images/docs/e18f7f87a5efaaa5284cf19be8de863c3833379d37b095aef9d015835a694485-prompt-2.webp" />
    </Frame>

    사용자가 이미 시스템 권한 프롬프트를 최대 횟수만큼 거부했다면(iOS는 한 번, Android는 두 번), 클릭 액션은 대신 사용자를 앱의 알림 설정으로 이동시킵니다. 이는 SDK에서 `requestPermission(fallbackToSettings: true)`를 호출하는 것과 동일합니다.

    <Info>
      **Push Permission Prompt** 클릭 액션이 있는 인앱 메시지는 이미 알림을 허용한 사용자에게는 표시되지 않습니다.
    </Info>
  </Step>

  <Step title="트리거 선택">
    오디언스는 메시지를 볼 자격이 있는 *대상*을 제어합니다. 트리거는 메시지가 표시되는 *시점*을 제어합니다. 사용자가 알림받을 만한 가치가 있는 무언가를 방금 경험한 **가치 있는 순간**에 프롬프트를 트리거하는 것을 목표로 하세요.

    <Frame caption="메시지가 표시되는 시기를 제어하는 트리거 옵션.">
      <img src="https://mintcdn.com/onesignal/jFWn5xzleD8du3j6/images/docs/52f0d8bef7cac18c1d791ec229d2bd86e995a8e01401c7559e2476fcfecddc6d-Screenshot_2024-10-29_at_2.18.33_PM.png?fit=max&auto=format&n=jFWn5xzleD8du3j6&q=85&s=1b55a4815213ddf3f77db8041e143aa2" alt="인앱 메시지 트리거 구성 패널" width="1792" height="514" data-path="images/docs/52f0d8bef7cac18c1d791ec229d2bd86e995a8e01401c7559e2476fcfecddc6d-Screenshot_2024-10-29_at_2.18.33_PM.png" />
    </Frame>

    트리거 옵션(전환율이 낮은 것부터 높은 것 순으로 대략적으로 정렬):

    * **앱 열기 시.** 간단하지만 최적인 경우는 드뭅니다. 앱의 가치가 몇 초 안에 명확한 경우에만 사용하세요.
    * **설정된 세션 시간 후.** 좋은 기본값. 사용자가 앱을 탐색한 후에 요청하도록 기다립니다.
    * **특정 사용자 이벤트 시.** 전환에 가장 좋습니다. 온보딩 완료, 항목 저장, 토픽 팔로우, 첫 구매 완료 같은 신호가 강한 액션 이후에 트리거하세요.
    * **프로그래밍 방식**, [인앱 메시지 트리거 SDK 메서드](./mobile-sdk-reference#addtrigger-addtriggers)를 사용. 여러 신호를 결합한 후에 프롬프트하는 등 타이밍과 컨텍스트를 완전히 제어합니다.

    예를 들어, 사용자가 앱에서 최소 5분을 보낼 때까지 기다리려면:

    <Frame caption="5분의 세션 시간 후 메시지를 표시하도록 구성된 트리거.">
      <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/81f8cca652667ae5920dbc8b73cca1b297d9e5f35d5ed4dc23d05640a4c838ae-Screenshot_2024-10-29_at_2.25.25_PM.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=311ed96b93b789bb652cc365b5708d7a" alt="5분으로 설정된 세션 시간 트리거" width="1792" height="624" data-path="images/docs/81f8cca652667ae5920dbc8b73cca1b297d9e5f35d5ed4dc23d05640a4c838ae-Screenshot_2024-10-29_at_2.25.25_PM.png" />
    </Frame>
  </Step>

  <Step title="일정과 빈도">
    메시지가 표시되는 빈도를 제어하세요.

    * **Only once.** 처음에 준비되지 않았던 사용자를 전환할 가능성이 낮습니다.
    * **Every time conditions are met.** 너무 공격적이며 사용자를 불편하게 할 수 있습니다.
    * **Multiple times (권장).** 사용자당 최대 표시 횟수와 표시 사이 간격을 설정하세요. 예를 들어, `20`회 표시와 `2 weeks` 간격은 미구독 사용자에게 약 10개월 동안 공격적인 주기로 재프롬프트합니다. 참여도가 낮거나 유틸리티성 앱에서 2주 간격이 부담스럽게 느껴진다면 간격을 (예: `30 days` 또는 `60 days`처럼) 늘리세요.

    <Frame caption="인앱 메시지의 일정 및 빈도 설정.">
      <img src="https://mintcdn.com/onesignal/Xl2NHJvxakrK4JbL/images/docs/eb61a38c8908fbeba60833eecc357d720e747c37abacffdfe246dbd7758bbaf4-Screenshot_2024-10-29_at_2.28.20_PM.png?fit=max&auto=format&n=Xl2NHJvxakrK4JbL&q=85&s=7a49b641bdeb959dde6edad5ef7de9dc" alt="최대 표시 횟수와 표시 사이 간격을 보여주는 일정 구성" width="1792" height="910" data-path="images/docs/eb61a38c8908fbeba60833eecc357d720e747c37abacffdfe246dbd7758bbaf4-Screenshot_2024-10-29_at_2.28.20_PM.png" />
    </Frame>
  </Step>
</Steps>

***

## 프로그래밍 방식으로 권한 프롬프트 표시

[`requestPermission()`](./mobile-sdk-reference#requestpermission-fallbacktosettings-push) 또는 [`optIn()`](./mobile-sdk-reference#optout-optin-optedin) SDK 메서드를 사용해 시스템 권한 프롬프트를 수동으로 트리거할 수 있습니다. 다음과 같은 사용자 지정 흐름에 유용합니다.

* [기본 설정 센터](./preference-center).
* 사용자 프로필 화면.
* 특정 인앱 이벤트.

이미 거부한 사용자가 아무 일도 일어나지 않는 대신 앱의 알림 설정으로 리디렉션되도록 하려면 `requestPermission()`에 `fallbackToSettings: true`를 전달하세요.

<Note>
  `optOut()`을 통해 SDK 수준에서 구독이 옵트아웃된 경우(구독 레코드에 `notification_types: -2`로 표시됨), `requestPermission()` 단독으로는 구독 상태가 변경되지 않습니다. 대신 `optIn()`을 사용하세요. 권한을 요청함과 **동시에** 옵트아웃 상태를 해제합니다.
</Note>

***

## iOS 임시 알림 사용

임시 푸시 알림은 iOS 12에서 도입되었습니다. 권한 프롬프트를 표시하지 않고도 알림 센터로 알림을 전달할 수 있습니다. 사용자는 앱의 실제 콘텐츠를 확인한 후 그 경험을 바탕으로 알림을 유지할지, 무음으로 할지, 끌지 결정합니다.

**전략으로서 효과적인 이유:**

* 실패할 시스템 프롬프트가 없습니다. 사전 옵트인 결정 없이도 첫 세션부터 사용자에게 도달하기 시작할 수 있습니다.
* 사용자는 가상의 설명이 아닌 실제 가치를 기반으로 결정합니다.
* 나중에 소프트 프롬프트를 표시하여 임시 사용자를 배너, 소리, 잠금 화면 알림이 포함된 전체 푸시 구독자로 전환할 수 있습니다.

**트레이드오프.** 임시 알림은 가시성이 낮습니다. 알림 센터로만 조용히 전달되며, 사용자가 전체 권한으로 업그레이드하기 전까지는 배너, 소리, 잠금 화면 알림이 없습니다.

<Frame caption="사용자에게 알림을 유지할지 끌지 묻는 임시 알림.">
  <img src="https://mintcdn.com/onesignal/l4Z9oMlZl9nJOS_T/images/push/ios-provisional-push-notifications.jpg?fit=max&auto=format&n=l4Z9oMlZl9nJOS_T&q=85&s=7c07a624b367b7c4cbf0572a7464311c" alt="Keep 및 Turn Off 옵션이 있는 iOS 임시 푸시 알림" width="1062" height="585" data-path="images/push/ios-provisional-push-notifications.jpg" />
</Frame>

임시 승인을 활성화하려면 OneSignal 대시보드의 **Settings > Apple iOS > Advanced Configuration**으로 이동하여 **Enable iOS 12 direct to history**를 체크하세요. 사용자가 임시 알림과 상호작용하는 방식과 이를 표준 프롬프트와 결합하는 방법을 포함한 전체 안내는 [iOS 임시 푸시 알림](./ios-provisional-push-notifications)을 참조하세요.

<Tip>
  임시 알림과 가치 있는 순간에 표시되는 소프트 프롬프트를 결합하는 구체적인 플레이북은 [예시 온보딩 옵트인 전략](#example-onboarding-opt-in-strategy)을 참조하세요.
</Tip>

***

## 푸시 권한 및 프롬프트 결과 추적

* [인앱 메시지 클릭 리스너](./mobile-sdk-reference#addclicklistener-in-app)로 사용자가 소프트 프롬프트에서 어떤 버튼을 탭했는지 추적하세요.
* [인앱 메시지 수명 주기 리스너](./mobile-sdk-reference#addlifecyclelistener)로 노출과 닫기(사용자가 소프트 프롬프트를 봤지만 탭하지 않은 경우)를 추적하세요.
* [푸시 권한 옵저버](./mobile-sdk-reference#addpermissionobserver-push)로 시스템 권한 프롬프트 자체의 결과를 추적하세요.

<Info>
  이러한 SDK 이벤트를 원하는 백엔드나 분석 도구로 전달할 수 있습니다.
</Info>

***

## FAQ

### 사용자가 시스템 권한 프롬프트를 거부하면 어떻게 되나요?

iOS에서는 시스템 권한 프롬프트를 거부하면 앱의 푸시 알림이 영구적으로 비활성화됩니다. 프롬프트를 다시 표시할 수 없습니다. Android에서는 사용자에게 한 번 더 기회가 주어집니다(총 두 번). 모든 시도가 소진된 후에는 사용자가 기기의 **설정 > 알림**에서 수동으로 알림을 다시 활성화해야 합니다. **Push Permission Prompt** 클릭 액션과 [`requestPermission(fallbackToSettings: true)`](./mobile-sdk-reference#requestpermission-fallbacktosettings-push)는 모두 사용자를 알림 설정으로 직접 이동시켜 이를 처리합니다.

### 네이티브 시스템 권한 프롬프트를 커스터마이즈할 수 있나요?

아니요. iOS와 Android의 시스템 권한 프롬프트는 운영 체제가 제어하며 커스터마이즈할 수 없습니다. 커스터마이즈할 수 있는 것은 그 앞에 표시되는 인앱 메시지, 즉 소프트 프롬프트뿐입니다. 소프트 프롬프트로 알림의 가치를 설명하고, 기대치를 설정하며, 시스템 프롬프트에서 "Allow"를 선택할 가능성을 높이세요.

### 임시 알림을 받은 사용자에게도 프롬프트를 표시할 수 있나요?

네, 그리고 그렇게 해야 합니다. 임시 알림 사용자는 이미 앱의 실제 알림을 경험했기 때문에 소프트 프롬프트의 최적 후보입니다. 권장 패턴은 [iOS 임시 알림 사용](#use-ios-provisional-notifications)을 참조하세요. 사용자가 임시 알림을 열거나 반응한 직후에 소프트 프롬프트 타이밍을 잡으세요.

### 이전에 푸시를 거부한 사용자에게 다시 프롬프트하려면 어떻게 해야 하나요?

시스템 권한 프롬프트가 소진된 후에는(iOS에서 한 번, Android에서 두 번) 다시 표시할 수 없습니다. 대신 [`requestPermission(fallbackToSettings: true)`](./mobile-sdk-reference#requestpermission-fallbacktosettings-push) SDK 메서드나 인앱 메시지의 **Push Permission Prompt** 클릭 액션을 사용하세요. 두 방법 모두 앱의 알림 설정을 열어 사용자가 수동으로 알림을 활성화할 수 있게 합니다. 알림이 왜 가치 있는지 설명하는 인앱 메시지와 함께 사용하세요.

### 모든 Android 버전에서 시스템 권한 프롬프트가 필요한가요?

아니요. Android 13(API 레벨 33) 이상에서만 필요합니다. Android 13은 런타임 알림 권한을 도입하여 푸시 알림에 대한 명시적인 사용자 동의를 요구합니다.

* **출시:** 2022년 8월(Pixel 기기).
* **대상 SDK 요구 사항:** 2023년 8월 31일부터 Google Play의 모든 신규 앱과 업데이트는 API 레벨 33 이상을 대상으로 해야 합니다.
* **출처:** [알림 권한에 대한 Google의 개발자 가이드](https://developer.android.com/develop/ui/views/notifications/notification-permission).

Android 12 이하에서는 앱 설치 시 알림 권한이 자동으로 부여됩니다.

***

<Columns cols={2}>
  <Card title="iOS 임시 푸시 알림" icon="apple" href="./ios-provisional-push-notifications">
    iOS 12+에서 사전 권한 프롬프트 없이 알림 센터로 알림을 보냅니다.
  </Card>

  <Card title="모바일 SDK 참조" icon="code" href="./mobile-sdk-reference#requestpermission-fallbacktosettings-push">
    `requestPermission`, `optIn`, 권한 옵저버, 인앱 클릭 리스너 API.
  </Card>

  <Card title="웹 푸시 권한 프롬프트" icon="globe" href="./permission-requests">
    소프트 프롬프트, 슬라이드다운, 네이티브 웹 푸시 권한 요청을 구성합니다.
  </Card>

  <Card title="인앱 메시지 설정" icon="message" href="./in-app-messages-setup">
    소프트 프롬프트를 실행할 수 있도록 앱에서 인앱 메시징을 활성화합니다.
  </Card>
</Columns>
