> ## 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では1回**、**Android（GoogleとHuawei）では2回**までです。ユーザーが毎回拒否した場合、システム設定で通知を手動で再有効化する必要があります。タイミングの悪いプロンプトはサブスクライバーを永久に失う原因となり得ます。リーチ可能なオーディエンスは、実施するあらゆるプッシュキャンペーンの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 weeks`ごと）で再表示するよう設定します。準備が整っていなかったユーザーは、システムプロンプトの上限を消費することなく、別の機会を得られます。
* **コピーとタイミングを反復改善する。** ソフトプロンプトを公開し、メッセージレポートでコンバージョンを観察したうえで、トリガー、文言、頻度を調整します。タイミングとコピーのわずかな変更で、オプトイン率が数十パーセントポイント変動することは珍しくありません。

### 例：オンボーディングオプトイン戦略

この例では、iOSで即座にリーチを獲得するための仮通知と、フルオプトインのために価値を実感した瞬間に表示するソフトプロンプトを組み合わせています。出発点として使用し、通知の種類と価値を実感する瞬間をアプリに合わせて調整してください。AndroidおよびHuaweiアプリの場合は、フェーズ1をスキップしてフェーズ2から始めてください。

**フェーズ1：iOSでのサイレントリーチ**

1. OneSignalダッシュボードの **Settings > Apple iOS > Advanced Configuration > Enable iOS 12 direct to history** で仮認証をオンにします。
2. ユーザーの最初の1週間に、質の高い通知を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. 数値に基づき、一度に1つの変数（トリガーイベント、ヘッドライン、CTAのコピー、または表示間隔）を調整します。

<Tip>
  ユーザーが仮通知を開いたり操作した直後にソフトプロンプトをトリガーしてください。ユーザーはすでに通知の価値を体験しているため、システムプロンプトでの「Allow」率が大幅に向上します。
</Tip>

***

## アプローチを選択する

OneSignalでプッシュサブスクライバーベースを拡大する方法は3つあります。ほとんどのiOSアプリでは仮通知とアプリ内ソフトプロンプトを組み合わせるべきです。ほとんどのAndroidアプリではソフトプロンプトから始めるべきです。

| アプローチ                                         | プラットフォーム           | 仕組み                                                                                                                                                                                      | 使用するタイミング                                                                 |
| --------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| **アプリ内ソフトプロンプト（推奨）**                          | iOS、Android、Huawei | OneSignalのアプリ内メッセージに **Push Permission Prompt** クリックアクションを設定します。ボタンをタップするとシステムプロンプトが表示されます。アプリ内メッセージを閉じても何も消費されないため、後で再度尋ねることができます。                                                      | デフォルトの選択肢。コードリリースなしでプロンプトを設計、スケジュール、ターゲット、再表示できます。                        |
| **プログラム的なプロンプト**                              | 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のオンボーディングと低摩擦のリーチに最適。ソフトプロンプトと組み合わせて、静かなサブスクライバーをフルプッシュサブスクライバーに変換します。 |

3つはすべて組み合わせることができます。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では1回、Androidでは2回）システム権限プロンプトを拒否している場合、クリックアクションは代わりにユーザーをアプリの通知設定に誘導します。これは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では、ユーザーはもう1回チャンスを得られます（合計2回）。すべての試行を使い切ると、ユーザーはデバイスの **Settings > Notifications** で手動で通知を再有効化する必要があります。**Push Permission Prompt** クリックアクションと[`requestPermission(fallbackToSettings: true)`](./mobile-sdk-reference#requestpermission-fallbacktosettings-push)はいずれも、ユーザーを通知設定に直接誘導することで対応します。

### ネイティブシステム権限プロンプトをカスタマイズできますか？

いいえ。iOSとAndroidのシステム権限プロンプトはオペレーティングシステムによって制御されており、カスタマイズできません。カスタマイズできるのは、その前に表示されるアプリ内メッセージであるソフトプロンプトだけです。ソフトプロンプトを使って通知の価値を説明し、期待値を設定し、システムプロンプトで「Allow」が選択される可能性を高めましょう。

### 仮通知を利用しているユーザーにもプロンプトを表示できますか？

はい、表示すべきです。仮通知のユーザーは、すでにアプリからの実際の通知を目にしているため、ソフトプロンプトの絶好の対象です。推奨されるパターンについては、[iOS仮通知を使用する](#use-ios-provisional-notifications)をご覧ください。ユーザーが仮通知を開いたり操作した直後にソフトプロンプトが出るようタイミングを調整してください。

### 以前にプッシュを拒否したユーザーに再プロンプトするにはどうすればよいですか？

システム権限プロンプトを使い切ったら（iOSでは1回、Androidでは2回）、再表示することはできません。代わりに、[`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>
