なぜプッシュ権限プロンプトを使用するのですか?
バナーとして表示され、ロック画面に表示され、サウンドを再生するなどのプッシュ通知を送信するには、まずユーザーの権限を取得する必要があります。iOS、Android、Huawei、Amazon、Webでは、これにはシステムレベルの権限プロンプトの表示が含まれます。
requestPermission() SDKメソッドを使用していつでもプロンプトをトリガーできますが、適切なコンテキストがなければユーザーは拒否する可能性が高くなります——iOSでは、拒否されたプロンプトは再表示できません。
推奨されるアプローチは「ソフトプロンプト」です——リクエストを紹介するカスタムアプリ内メッセージです。ユーザーが受け入れると、システムプロンプトが表示されます。拒否した場合は何も起こらず、後で再度尋ねることができます。

アプリ内プッシュ権限プロンプトの設定
自動権限プロンプトを削除する
開始する前に、アプリがネイティブプッシュプロンプトを自動的にトリガーしていないことを確認してください:
- アプリ起動時に呼び出している場合は、
requestPermission()またはoptIn()メソッドを削除します。 requestAuthorizationWithOptionsへのネイティブiOS呼び出しと、プッシュトークンを生成するメソッドを削除します。requestPermissionsへのAndroid呼び出しと、プッシュトークンを生成するメソッドを削除します。
アプリ内メッセージを作成または編集する
メッセージ > アプリ内に移動し、次のいずれかを実行します:
オーディエンスをすべてのユーザーに表示に設定します。OneSignalはプッシュ権限プロンプトのクリックアクションに基づいて、プッシュを未購読のユーザーにのみ自動的にこのメッセージをフィルタリングします。
- デフォルトのプッシュ権限プロンプトテンプレートを編集するか、
- 新しいメッセージをクリックして独自のメッセージを作成します。


メッセージデザインをカスタマイズする
アプリに合わせて外観、感触、表現をパーソナライズします。ユーザーがどのような通知を受け取るか、そしてなぜそれらが価値があるのかを知らせます。詳細については、ドラッグアンドドロップでアプリ内メッセージをデザインするまたはHTMLでアプリ内メッセージをデザインするをご覧ください。

プッシュ権限プロンプトクリックアクションを追加する
メッセージ内の任意のボタンまたは画像にプッシュ権限プロンプトクリックアクションを追加します。タップすると、システムプロンプトが表示されます。

ユーザーがすでに権限を拒否している場合、ボタンは代わりにアプリの通知設定に誘導します。


「プッシュ権限プロンプト」アクションを持つアプリ内メッセージは、すでに通知を許可しているユーザーには表示されません。
トリガーを選択する
オーディエンスは、メッセージを表示する資格があるユーザーを制御します。トリガーは、いつ表示されるかを制御します。
メッセージをトリガーできます:

- アプリを開いたとき
- 設定されたセッション時間の後
- 特定のユーザーイベント時
- プログラム的に、アプリ内メッセージSDKメソッドを使用してタイミングとコンテキストを完全に制御

プログラム的に権限プロンプトを表示する
requestPermission()またはoptIn() SDKメソッドを使用して、プッシュ権限プロンプトを手動でトリガーできます。これは、次のようなカスタムフローに役立ちます:
- プリファレンスセンター
- ユーザープロフィール画面
- 特定のアプリ内イベント
プッシュ権限とプロンプト結果の追跡
アプリ内メッセージを使用してプッシュをプロンプトする場合、アプリ内メッセージクリックリスナーを使用してクリックアクションを追跡できます。 アプリ内メッセージが表示されてもユーザーがボタンをクリックしない場合は、アプリ内メッセージライフサイクルイベントを使用してインプレッションと閉じるアクションを追跡できます。 システムレベルの権限プロンプト自体の結果を追跡するには、プッシュ権限リスナーを使用します。これらのSDKイベントを選択したバックエンドまたは分析ツールに送信できます。
FAQ
ユーザーがプッシュ権限プロンプトを拒否した場合はどうなりますか?
iOSでは、システムプロンプトを拒否するとアプリのプッシュ通知が永久に無効になります——プロンプトは再表示できません。Androidでは、ユーザーはもう1回チャンスがあります(合計2回)。すべての試みを使い果たした後、ユーザーはデバイスの設定 > 通知で手動で通知を再有効化する必要があります。OneSignal SDKのrequestPermission(fallbackToSettings: true)メソッドは、以前に権限が拒否された場合にユーザーを通知設定にリダイレクトできます。
ネイティブシステム権限プロンプトをカスタマイズできますか?
できません。ネイティブiOSおよびAndroidの権限ダイアログはオペレーティングシステムによって制御されており、カスタマイズできません。カスタマイズできるのはソフトプロンプト(システムプロンプトの前に表示されるアプリ内メッセージ)のみです。ソフトプロンプトを使用して通知の価値を説明し、期待値を設定し、システムプロンプトで「許可」が選択される可能性を高めます。仮通知でユーザーにプロンプトを表示できますか?
はい。iOS仮プッシュ通知を使用している場合でも、ソフトプロンプトを表示してこれらのユーザーをフルプッシュサブスクライバーに転換できます。仮通知から価値を見たユーザーのタイミングを戦略的に選んでください。以前にプッシュを拒否したユーザーに再プロンプトするにはどうすればよいですか?
iOSでユーザーが拒否した(またはAndroidで2回拒否した)後は、システム権限プロンプトを再表示することはできません。代わりにrequestPermission(fallbackToSettings: true) SDKメソッドを使用します。これにより、ユーザーが手動で通知を有効にできるアプリの通知設定ページが開きます。通知の価値を説明するアプリ内メッセージと組み合わせて使用してください。
Androidはいつから権限プロンプトを要求し始めましたか?
Android 13(APIレベル33)でランタイム通知権限が導入され、プッシュ通知のために明示的なユーザーの同意が必要になりました。- リリース: 2022年8月(Pixelデバイス)
- ターゲットSDKに必要: 2023年8月31日現在、Google Playのすべての新しいアプリとアップデートは、APIレベル33以上をターゲットにする必要があります。
- ソース: 通知権限に関するGoogleの開発者ガイド
iOS仮プッシュ通知
iOS 12+で事前の権限プロンプトなしに通知センターに通知を送信します。
