プッシュプライマーアプリ内メッセージ
ユーザーにプッシュ許可を求めるチャンスは一度きりです。そのため、プッシュ登録を最適化してプッシュメッセージのリーチを最大化することが重要です。アプリ内メッセージを使用して、ネイティブのプッシュプロンプトを表示する前に、オプトインした場合にどのようなメッセージを受け取れるかをユーザーに説明しましょう。これをプッシュプライマーと呼びます。

Brazeでプッシュプライマーアプリ内メッセージを作成するには、iOS、Android、またはWeb向けのアプリ内メッセージを作成する際に、ボタンのクリック時動作「プッシュ許可をリクエスト」を使用します。
前提条件
この機能にはボタンのクリック時動作が必要です。以下の最小バージョン以降でサポートされています。
また、以下のプラットフォーム固有の詳細にご注意ください。
| OSバージョン | 追加情報 |
|---|---|
| Android 12以前 | プッシュはデフォルトでオプトインされているため、プッシュプライマーの実装は推奨されません。 |
| Android 13以降 | ユーザーがプッシュ許可のプロンプトを2回拒否すると、Androidはそれ以降のプロンプト(Brazeのプッシュプライマーメッセージを含む)をブロックします。許可を付与するには、ユーザーがデバイスの設定でアプリのプッシュ通知を手動で有効にする必要があります。 |
一般的な情報
- プッシュプロンプトはインストールごとに1回のみ表示でき、これはオペレーティングシステムによって強制されます。
- アプリのプッシュ設定が明示的にオンまたはオフの場合、プロンプトは表示されません。暫定的な認可を持つユーザーにのみ表示されます。
- アプリのプッシュ設定がオンの場合: ユーザーはすでにオプトインしているため、Brazeはアプリ内メッセージを表示しません。
- アプリのプッシュ設定がオフの場合: デバイスの設定内でアプリのプッシュ通知設定にユーザーをリダイレクトする必要があります。
- 拒否後の再テスト: ユーザーがネイティブプロンプトを拒否した場合、iOSはそのアプリインストールに対してプロンプトを再度表示しません。プッシュプライマーフローを再テストするには、通常アプリをアンインストールして再インストールするか、設定でアプリの通知許可を変更する必要があります。
コードの手動削除
このチュートリアルで設定したアプリ内メッセージは、ユーザーがアプリ内メッセージのボタンをクリックすると、ネイティブのプッシュプロンプトコードを自動的に呼び出します。プッシュ通知の許可を2回リクエストしたり、不適切なタイミングでリクエストしたりしないように、開発者は既存のプッシュ通知の実装を変更して、アプリ内メッセージがユーザーに表示される最初のプッシュ通知プライマーになるようにする必要があります。
開発チームはアプリまたはサイトのプッシュ通知の実装を確認し、プッシュ許可をリクエストするコードを手動で削除する必要があります。たとえば、以下のコードへの参照を削除してください。
requestAuthorizationWithOptions
requestAuthorization
braze.requestPushPermission()
// or
appboy.registerAppboyPushMessages()
android.permission.POST_NOTIFICATIONS
ステップ1: アプリ内メッセージを作成する
まず、アプリ内メッセージを作成し、メッセージタイプとレイアウトを選択します。
メッセージとボタンの両方に十分なスペースを確保するために、フルスクリーンまたはモーダルのメッセージレイアウトを使用してください。フルスクリーンを選択する場合は、画像が必須であることに注意してください。
ステップ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: ボタンの動作を指定する
アプリ内メッセージにボタンを追加するには、2つのボタンブロックをメッセージにドラッグします。これらはアプリ内メッセージのプライマリボタンとセカンダリボタンとして機能します。また、行をメッセージにドラッグしてから、その行にボタンをドラッグすることで、ボタンを同じ水平行に配置することもできます(積み重ねるのではなく)。スターターボタンとして「通知を許可」と「今はしない」をお勧めしますが、さまざまなボタンプロンプトを割り当てることができます。
ボタンのコピーを追加したら、各ボタンのクリック時動作を指定します。
- ボタン1:「メッセージを閉じる」に設定します。これはセカンダリボタン、つまり「今はしない」オプションです。
- ボタン2:「プッシュ許可をリクエスト」に設定します。これはプライマリボタン、つまり「通知を許可」オプションです。

ステップ4:配信のスケジュール
プッシュプライマーを適切なタイミングで送信するには、アプリ内メッセージをアクションベースのメッセージとしてスケジュールし、トリガーアクションにカスタムイベントを実行を設定する必要があります。
理想的なタイミングはさまざまですが、Brazeではユーザーが何らかの高価値アクションを完了するまで待つことを推奨しています。これは、ユーザーがアプリやサイトに価値を感じ始めていることを示すタイミングや、プッシュ通知で対応できる説得力のあるニーズがあるとき(例えば、注文後に配送追跡情報を提供したい場合など)です。こうすることで、プロンプトはブランドのためだけでなく、顧客にとっても有益なものになります。

ステップ5:ユーザーのターゲティング
プッシュプライマーキャンペーンの目的は、プッシュ許可をまだ付与していないすべてのデバイスのユーザーに対してプロンプトを表示することです。これには、初めてのユーザーや、新しいデバイスを取得したり、アプリケーションを再インストールした既存のユーザーが含まれます。

ノーコードプッシュプライマーによる自動抑制: ノーコードプッシュプライマー(「プッシュ許可をリクエスト」ボタンアクション)を使用する場合、セグメンテーションにプッシュ購読フィルターを追加する必要はありません。SDKはプッシュ許可の状態に基づいて、デバイス上のアプリ内メッセージを自動的に抑制します。各プラットフォームでプライマーが表示または抑制されるタイミングの詳細については、「プッシュプライマーが表示されるタイミング」を参照してください。複数のデバイスを持つユーザーのターゲティングの詳細については、「複数のデバイスを持つユーザーのターゲティング」を参照してください。
ノーコードプッシュプライマーを使用していない場合は、Foreground Push Enabled For App is false というフィルターを追加してください。このフィルターは、フォアグラウンドプッシュ通知にまだオプトインしていない個々のアプリインストールを識別します。

Push Subscription Status is not Opted In のようなユーザーレベルのフィルターを使用すると、別のデバイスで既にオプトインしているユーザーが除外され、新しいデバイスでプロンプトを受信できなくなります。
それ以外にも、最も適切と思われる追加のセグメントを決定できます。たとえば、2回目の購入を完了したユーザー、会員登録したばかりのユーザー、週に2回以上アプリを訪問するユーザーなどをターゲティングできます。これらの重要なセグメントのユーザーをターゲティングすることで、ユーザーがオプトインしてプッシュ有効になる可能性が高まります。
プッシュプライマーが表示されるタイミング
ノーコードプッシュプライマー(「プッシュ許可をリクエスト」ボタンアクション)を使用すると、Braze SDKはデバイスのプッシュ許可状態を自動的にチェックし、アプリ内メッセージを表示するか抑制するかを判断します。これはメッセージが表示される前にデバイスレベルで行われるため、この動作を制御するための追加のセグメンテーションフィルターを追加する必要はありません。
以下の表は、各プラットフォームでプッシュプライマーのアプリ内メッセージが表示または抑制されるタイミングを示しています。
iOS (Swift SDK)
| 認可ステータス | プライマー表示? | 備考 |
|---|---|---|
notDetermined |
はい | ユーザーがまだプッシュプロンプトに応答していません |
denied |
いいえ | iOSではネイティブ許可プロンプトは1回しか許可されないため、SDKは自動的にプライマーを抑制します。拒否後、「許可」をタップしてもネイティブプロンプトをトリガーできません。 |
provisional |
はい | デバイスが仮認可を持っています |
ephemeral |
はい | デバイスが一時的な認可を持っています |
authorized |
いいえ | ユーザーは既にプッシュ許可を付与しています |
Android (Android SDK)
| 状態 | プライマー表示? | 備考 |
|---|---|---|
| Android < 13 | いいえ | Android 12以前ではOSレベルのプロンプトは存在しません(プッシュはデフォルトでオプトインです) |
アプリの targetSdkVersion < 13 |
いいえ | アプリがランタイム許可モデルをターゲットにしていません |
POST_NOTIFICATIONS が既に許可済み |
いいえ | ユーザーは既に許可を付与しています |
| 永久に拒否 | いいえ | ユーザーが許可を2回以上拒否し、shouldShowRequestPermissionRationale が false を返します |
| Android 13以上、許可未付与、プロンプト対象 | はい | デバイスがOS許可プロンプトを表示する対象です |
Android SDKは、OSバージョン、ターゲットSDKバージョン、許可状態、およびOSが実際にプロンプトを表示するかどうか(shouldShowRequestPermissionRationale を通じて)をチェックします。
Web (Web SDK)
Notification.permission |
プッシュ対応 | プライマー表示? | 備考 |
|---|---|---|---|
"default" |
はい | はい | ユーザーがまだ許可リクエストに応答していません |
"granted" |
いずれか | いいえ | ユーザーは既に許可を付与しています |
"denied" |
いずれか | いいえ | ユーザーが通知をブロックしました。iOSと異なり、Webの "denied" 状態はブラウザ内で回復できません(設定へのディープリンクに相当するものがありません)。そのため、SDKはプライマーを抑制します。 |
"default" |
いいえ | いいえ | ブラウザがプッシュ通知をサポートしていません |
複数のデバイスを持つユーザーのターゲティング
Brazeはデバイスレベルではなくプロファイルレベルでユーザーデータを取得するため、複数のデバイスを所有するユーザーのターゲティングは困難な場合があります。セグメンテーションのプッシュ購読フィルターは、特定のターゲットデバイスの購読状態ではなく、単一デバイスの購読状態に基づいてユーザーを含めたり除外したりします。さらに、iOSの仮認可状態は、これらのデバイスが技術的にはフォアグラウンドプッシュトークンを持っているものの、ユーザーが明示的にオプトインしていないため、複雑さを増します。
プッシュ購読フィルターの問題
ユーザーが異なるプッシュ購読状態の複数のデバイスを持っている場合、セグメンテーションのプッシュ購読フィルターでは一部のデバイスをターゲティングできない場合があります。以下のシナリオを考えてみてください。
シナリオ1:ユーザーが異なるプラットフォームの2つのデバイスを持っている場合
ユーザーが2つのデバイスを持っています:
- デバイスA: Android、プッシュにオプトイン済み
- デバイスB: iOS、プッシュにオプトインしていない
機能しないセグメントフィルター:
Push enabled = false- ユーザーはAndroidデバイスでプッシュが有効なため、セグメントに含まれません。セグメントにはiOSデバイスが含まれません。Push subscription status is not opted in- ユーザーはAndroidデバイスでプッシュが有効なため、セグメントに含まれません。セグメントにはiOSデバイスが含まれません。
機能するセグメントフィルター:
Push enabled for iOS = false- ユーザーはAndroidデバイスでプッシュが有効ですが、iOSデバイスのみをターゲティングしているため、ユーザーはセグメントに含まれます。セグメントにはiOSデバイスが含まれます。
シナリオ2:ユーザーが異なる状態の2つのiOSデバイスを持っている場合
ユーザーが2つのiOSデバイスを持っています:
- デバイスA: プッシュにオプトイン済み
- デバイスB: 仮認可済みだがオプトインしていない
機能しないセグメントフィルター:
Push enabled = false- デバイスAがプッシュにオプトインしているため、ユーザーはセグメントに含まれません。セグメントにはデバイスBが含まれません。Provisionally opted in = true- デバイスAは完全にオプトインしており、仮認可状態ではありません。ユーザーはセグメントに含まれません。セグメントにはデバイスBが含まれません。Push enabled for app > iOS = false- デバイスAがiOSでプッシュにオプトインしているため、ユーザーはセグメントに含まれません。セグメントにはデバイスBが含まれません。Push subscription status is not opted in- デバイスAがプッシュにオプトインしているため、ユーザーはセグメントに含まれません。セグメントにはデバイスBが含まれません。
結果: これらのプッシュフィルターをどのように組み合わせても、セグメントから少なくとも1つのデバイスが除外されます。
シナリオ3:ユーザーが同じOSの3つ以上のデバイスを持っている場合
ユーザーが3つのデバイスを持っています:
- デバイスA: プッシュにオプトイン済み
- デバイスB: プッシュにオプトインしていない
- デバイスC: プッシュにオプトインしていない
機能しないセグメントフィルター:
Push enabled = false- デバイスAがプッシュにオプトインしているため、ユーザーはセグメントに含まれません。セグメントにはデバイスBとCが含まれません。Push enabled for app > X = false- デバイスAが指定されたアプリでプッシュにオプトインしているため、ユーザーはセグメントに含まれません。セグメントにはデバイスBとCが含まれません。Push subscription status is not opted in- デバイスAがプッシュにオプトインしているため、ユーザーはセグメントに含まれません。セグメントにはデバイスBとCが含まれません。
結果: これらのプッシュフィルターをどのように組み合わせても、少なくとも1つのデバイスがターゲティングされないままになります。
ソリューション:ノーコードプッシュプライマーを使用する
推奨されるソリューションは、追加のプッシュステータスセグメンテーションフィルターなしで、ノーコードプッシュプライマー(「プッシュ許可をリクエスト」ボタンアクション)を使用することです。

自動抑制: ノーコードプッシュプライマーは、プッシュ許可の状態に基づいてデバイス上で自動的に抑制されます。SDKはメッセージを表示する前に、デバイス固有のプッシュ認可ステータスをチェックします。たとえば、iOSでSDKがユーザーが既に認可を付与している(.authorized)ことを検出した場合、追加のセグメンテーションフィルターなしでアプリ内メッセージを自動的に抑制します。同様に、ユーザーがプッシュ許可を明示的に拒否した場合(.denied)、iOSではネイティブプロンプトを1回しか表示できないため、SDKもプライマーを抑制します。プライマーは、表示することが有用な状態(iOSの notDetermined、provisional、ephemeral など)のデバイスにのみ表示されます。プラットフォーム別の完全な対象条件については、「プッシュプライマーが表示されるタイミング」を参照してください。
ノーコードプッシュプライマーを使用する利点は、その機能がBraze SDKによってサポートされていることです。SDKはメッセージを表示する特定のデバイスのプッシュトークンステータスを検出できるため、複数のデバイスを持つユーザーを除外する可能性のあるプロファイルレベルのセグメンテーションフィルターに依存する必要がありません。
考慮事項
ノーコードプッシュプライマーが必須: 自動抑制を機能させるには、ノーコードプッシュプライマーを使用する必要があります。「プッシュ許可をリクエスト」ボタンアクションの代わりにカスタムロジックやディープリンクを設定した場合、SDKはプッシュプライマーを表示しようとしていることを識別できません。その結果、デバイスの購読状態に関係なくメッセージが表示されます。
オプトアウトしたユーザーの抑制: ノーコードプッシュプライマーは、OSレベルでプッシュ許可を明示的に拒否したユーザー(たとえば、iOSの .denied、複数回のリクエスト後のAndroidでの永久拒否、Webの "denied")に対して自動的に抑制されます。ただし、追加の制御が必要な場合もあります。たとえばAndroidでは、ユーザーが POST_NOTIFICATIONS 許可を永久に拒否することなく、デバイス設定で通知を無効にしている場合があります。これらのユーザーに対してプライマーを抑制し、別のキャンペーンでリターゲティングする場合は、ノーコードプライマーと組み合わせて以下の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ではコンバージョンのデフォルト設定が用意されていますが、プッシュプライマーに関連するコンバージョンイベントを設定することもできます。