Skip to content

プッシュ有効化とプッシュサブスクリプション

このリファレンス記事では、Brazeにおけるプッシュ有効化とプッシュサブスクリプション状態の概念について説明します。iOS、Android、Webにおける動作の基本的な違いも含まれています。

プッシュ通知のサブスクリプションの状態{#push-sub-states}

Brazeの 「プッシュ通知のサブスクリプションの状態」は、プッシュ通知の受信を希望するユーザーのグローバルな嗜好を識別します。サブスクリプションの状態はユーザーベースなので、個々のアプリに固有のものではない。サブスクリプションの状態は、プッシュ通知のターゲットにするユーザーを決定するときに役立つフラグです。

以下のサブスクリプション状態オプションが存在する: Subscribed, Opted-In, および Unsubscribed

デフォルトでは、ユーザーがプッシュ通知でメッセージを受け取るには、プッシュサブスクリプション状態が「許可」またはSubscribed「拒否」のいずれかでなければならず、かつフォアグラウンドOpted-Inプッシュがイネーブルドになっている必要がある。メッセージの作成時に、この設定をオーバーライドできます。

プッシュ通知のサブスクリプションの状態の更新

ユーザーのプッシュサブスクリプション状態を更新する以下の方法を検討せよ:

自動オプトイン (デフォルト)

Braze はデフォルトで、ユーザーが初めてアプリのプッシュ通知を承認したときに、ユーザーのプッシュ通知のサブスクリプションの状態を Opted-In に設定します。Braze はまた、ユーザーがシステム設定でプッシュ許可を無効にした後、再度プッシュ許可を有効にした場合にもこれを行います。

このデフォルトの動作を無効にするには、Android Studio プロジェクトの braze.xml ファイルに次のプロパティを追加します。

1
<bool name="com_braze_optin_when_push_authorized">false</bool>

Braze Swift SDKバージョン 7.5.0 から、Xcode プロジェクトの AppDelegate.swift ファイルに optInWhenPushAuthorized の設定を追加することで、この動作を無効にしたり、さらにカスタマイズしたりすることができる:

1
2
3
4
configuration.optInWhenPushAuthorized = false // disables the default behavior

let braze = Braze(configuration: configuration)
AppDelegate.braze = braze

SDKの統合

WebAndroid、または iOS 上で setPushNotificationSubscriptionType メソッドを使用して、Braze SDK でユーザーの購読状態を更新できる。例えば、この方法を使って、ユーザーが手動でプッシュ通知を有効または無効にできる設定ページをアプリ内に作成することができる。

REST API

ユーザーのサブスクリプションの状態を更新するには、Braze REST API で/users/track エンドポイントを使用して、ユーザーの push_subscribe 属性を更新します。

プッシュ通知のサブスクリプションの状態の確認

John Doeのユーザープロファイルで、プッシュ購読の状態がSubscribedに設定されている。

Brazeでは、以下のいずれかの方法でユーザーのプッシュ通知サブスクリプション状態を確認できる:

  • ユーザープロフィール:Braze ダッシュボードの [ユーザー検索] ページから、個々のユーザープロファイルにアクセスできます。Eメールアドレス、電話番号、または外部ユーザーIDを介して)ユーザーのプロフィールを見つけた後、Engagementタブを選択してユーザーの購読状態を表示し、手動で調整することができる。
  • REST API でのエクスポート:ExportUsers by segmentまたはUsers by identifierエンドポイントを使用して、個々のユーザープロファイルを JSON 形式でエクスポートすることができる。Brazeは、デバイスごとのプッシュ通知イネーブルメント情報を含むプッシュトークンオブジェクトを返す。

iOSユーザーアクションとプッシュステータス

以下の表は、さまざまなユーザーアクションがBrazeにおけるiOSプッシュ有効化、フォアグラウンドまたはバックグラウンドプッシュ登録、およびプッシュサブスクリプションステータスにどのように影響するかを示しています。ユーザーがアプリをインストールして最初のセッションを開始すると、その状態は通常、最初の行に示されているとおりになります。後続の各アクションにより、これらの値の一部が更新される場合がありますが、すべてが更新されるわけではありません。

* アプリが仮承認プッシュを使用していない場合、ユーザーがプッシュ通知を許可するまでForeground Push Enabledfalseです。アプリが仮承認プッシュを使用している場合、最初のセッション開始時にForeground Push Enabledtrueになります。詳細については、仮承認とサイレントプッシュを参照してください。

** Braze Swift SDKバージョン7.5.0以降、optInWhenPushAuthorized設定プロパティにより、プッシュ権限が承認された際にプッシュサブスクリプション状態が自動的にOpted-Inに設定されるかどうかを制御できます。詳細については、プッシュサブスクリプション状態の更新を参照してください。

プッシュ権限

プッシュ対応のすべてのプラットフォーム(iOS、Web、Android)では、OSレベルのシステムプロンプトによる明示的なオプトインが必要です。以下に若干の違いを説明します。

ユーザーの決定は最終的なものであり、拒否された後に再度尋ねることはできないため、プッシュプライマーのアプリ内メッセージを使用することは、オプトイン率を向上させるための重要な戦略です。

ネイティブOSプッシュ権限プロンプト

Android

Android 13より前は、プッシュ通知の送信に権限は不要でした。Android 12以前では、Brazeが自動的にプッシュトークンをリクエストする際、最初のセッションですべてのユーザーがSubscribedと見なされます。この時点で、ユーザーはそのデバイスの有効なプッシュトークンとデフォルトのサブスクリプション状態Subscribedを持つプッシュ有効状態になります。

Android 13以降、プッシュ権限はユーザーに要求し、許可を得る必要があります。アプリは適切なタイミングでユーザーに手動で権限をリクエストできますが、リクエストしない場合は、アプリが通知チャネルを作成した際に自動的にプロンプトが表示されます。

iOS

システム通知センターの通知。下部に「Yachtrアプリからの通知を引き続き受け取りますか?」というメッセージが表示され、その下に「受け取る」または「オフにする」の2つのボタンがあります

アプリは仮承認プッシュまたは承認済みプッシュをリクエストできます。

承認済みプッシュでは、通知を送信する前にユーザーからの明示的な許可が必要ですが、仮承認プッシュでは、サウンドやアラートなしで通知センターに直接__サイレントに__通知を送信できます。

仮承認とサイレントプッシュ

iOS 12(2018年リリース)より前は、すべてのユーザーがプッシュ通知を受け取るために明示的にオプトインする必要がありました。

iOS 12で、Appleは仮承認を導入しました。これにより、ブランドはユーザーが明示的にオプトインする前に、ユーザーの通知センターにサイレントプッシュ通知を送信でき、メッセージの価値を早期に示す機会が得られます。詳細については、仮承認を参照してください。

Web

Webでは、ネイティブブラウザの権限ダイアログを通じて明示的なユーザーオプトインをリクエストする必要があります。

iOSやAndroidではアプリがいつでも権限プロンプトを表示できますが、一部のモダンブラウザでは「ユーザージェスチャー」(マウスクリックやキーストローク)によってトリガーされた場合にのみプロンプトが表示されます。サイトがページ読み込み時にプッシュ通知の権限をリクエストしようとすると、ブラウザによって無視またはサイレント化される可能性があります。

そのため、ページが読み込まれたときにランダムにではなく、ユーザーがWebサイト上のどこかをクリックしたときにのみ権限をリクエストする必要があります。

プッシュトークン

プッシュトークンは、ユーザーのデバイスによって生成される一意の匿名識別子であり、各受信者の通知をどこに送信するかを識別するためにBrazeに送信されます。

プッシュトークンの分類には、プッシュ通知をユーザーに送信する方法を理解するために不可欠な2つの方法があります。

  1. フォアグラウンドプッシュは、ユーザーのデバイスのフォアグラウンドに通常の可視プッシュ通知を送信する機能を提供します。
  2. バックグラウンドプッシュは、特定のデバイスがそのブランドからのプッシュ通知の受信をオプトインしているかどうかに関係なく利用できます。バックグラウンドプッシュにより、ブランドはサイレントプッシュ通知(意図的に表示されない通知)をデバイスに送信して、アンインストール追跡などの主要な機能をサポートできます。

ユーザープロファイルにアプリに関連付けられた有効なフォアグラウンドプッシュトークンがある場合、Brazeはそのユーザーを該当アプリの「プッシュ登録済み」と見なします。Brazeは、これらのユーザーを識別するための特定のセグメンテーションフィルターForeground Push Enabled for App,を提供しています。

1つのデバイスに複数のユーザー

プッシュトークンはデバイスとアプリの両方に固有であるため、同じデバイスを使用している複数のユーザーを区別するためにプッシュトークンを使用することはできません。

たとえば、CharlieとKimという2人のユーザーがいるとします。Charlieが自分の電話でアプリのプッシュ通知を有効にしており、KimがCharlieの電話を使ってCharlieのプロファイルからログアウトし、自分のプロファイルにログインした場合、プッシュトークンはKimのプロファイルに再割り当てされます。その後、Kimがログアウトし、Charlieが再度ログインするまで、プッシュトークンはそのデバイス上のKimのプロファイルに割り当てられたままになります。

アプリまたはWebサイトは、デバイスごとに1つのプッシュサブスクリプションのみを持つことができます。そのため、ユーザーがデバイスまたはWebサイトからログアウトし、新しいユーザーがログインすると、プッシュトークンは新しいユーザーに再割り当てされます。これは、ユーザーのプロファイルのエンゲージメントタブの連絡先設定セクションに反映されます。

ユーザーのプロファイルの「エンゲージメント」タブにあるプッシュトークン変更ログ。プッシュトークンが別のユーザーに移動された日時とトークンの内容が表示されています。

プッシュプロバイダー(APNs/FCM)が1つのデバイス上の複数のユーザーを区別する方法がないため、プッシュトークンは最後にログインしたユーザーに渡され、デバイス上でプッシュのターゲットとするユーザーが決定されます。

複数のデバイスと1人のユーザー

プッシュサブスクリプション状態はユーザーベースであり、個々のアプリに固有ではありません。サブスクリプション状態は最後に設定された値です。そのため、ユーザーがプッシュ通知にオプトインした場合、そのプッシュサブスクリプション状態はすべての対象デバイスでOpted-Inになります。ユーザーが後でアプリケーションまたはブランドが提供するその他の方法を通じてプッシュ通知を明示的に配信停止した場合、プッシュサブスクリプション状態はUnsubscribedに更新され、プッシュ登録済みのデバイスはプッシュ通知を受信できなくなります。

Foreground Push Enabledフィルター

Foreground Push Enabledは、Brazeのセグメンテーションフィルターであり、マーケターがBrazeにプッシュ通知の送信を許可しているユーザーと、プッシュ通知を受け取らないという意思を表明していないユーザーを簡単に識別できます。

Foreground Push Enabledフィルターは以下を考慮します:

  • Brazeがプッシュ通知を送信できるかどうか(フォアグラウンドプッシュトークン)
  • ユーザーのいずれかのデバイスでプッシュを受信するための全体的な設定(プッシュサブスクリプション状態)

ユーザーが「Push Registered for Marketing (iOS)」であることを示すダッシュボードのスクリーンショット

ユーザーは、ワークスペース内のアプリのアクティブなフォアグラウンドプッシュトークンを持っている場合、「プッシュ有効」または「プッシュ登録済み」と見なされます。つまり、プッシュ有効化ステータスはアプリ固有です。

その他のプラットフォーム固有のシナリオ

ユーザーがネイティブプッシュ権限プロンプトを受け入れると、サブスクリプションステータスはopted inに変更されます。

サブスクリプションを管理するには、ユーザーメソッドsetPushNotificationSubscriptionTypeを使用してサイトに設定ページを作成し、その後ダッシュボードでオプトアウトステータスによってユーザーをフィルタリングできます。

ユーザーがブラウザ内で通知を無効にした場合、そのユーザーに送信される次のプッシュ通知はバウンスし、Brazeはユーザーのプッシュトークンを適切に更新します。これは、プッシュ有効フィルター(Background or Foreground Push EnabledForeground Push EnabledForeground Push Enabled for App)の適格性を管理するために使用されます。ユーザーのプロファイルに設定されたサブスクリプションステータスはユーザーレベルの設定であり、プッシュがバウンスしても変更されません。

フォアグラウンドプッシュが有効なユーザーがOS設定でプッシュを無効にした場合、次のセッション開始時に以下が発生します:

  • Brazeはそのユーザーをフォアグラウンドプッシュ無効としてマークし、プッシュメッセージの送信を試みなくなります。
  • Foreground Push Enabled for App (Android)フィルターとForeground Push Enabledセグメンテーションフィルター(ユーザープロファイル上の他のアプリに有効なフォアグラウンドプッシュトークンがない場合)はfalseを返します。

このシナリオでは、バックグラウンドプッシュトークンは引き続き存在するため、セグメンテーションフィルターBackground or Foreground Push Enabled = trueを使用してバックグラウンド(サイレント)プッシュ通知を引き続き送信できます。

Androidの場合、Brazeは以下の場合にユーザーをプッシュ無効と見なします:

  • ユーザーがデバイスからアプリをアンインストールした場合。
  • バウンスによりプッシュメッセージの配信に失敗した場合。これは多くの場合アンインストールが原因ですが、アプリの更新、新しいプッシュトークンバージョン、またはフォーマットが原因の場合もあります。
  • Firebase Cloud Messagingへのプッシュ登録が失敗した場合(ネットワーク接続の不良、またはFCMへの接続の失敗や有効なトークンの返却の失敗が原因の場合があります)。
  • ユーザーがデバイス設定でアプリのプッシュ通知をブロックし、その後セッションを記録した場合。

ユーザーがフォアグラウンドプッシュのオプトインプロンプトを受け入れたかどうかに関係なく、Xcodeでリモート通知が有効になっており、アプリがregisterForRemoteNotifications()を呼び出している場合、バックグラウンドプッシュを送信できます。

アプリが仮承認されているか、ユーザーがプッシュにオプトインしている場合、フォアグラウンドプッシュトークンを受け取り、すべてのタイプのプッシュを送信できます。Braze内では、iOSでフォアグラウンドプッシュが有効なユーザーは、明示的(アプリレベル)または仮承認(デバイスレベル)のいずれかでプッシュ有効と見なされます。

ユーザーがOSレベルでプッシュ通知の受信を拒否した場合、プッシュサブスクリプション状態はSubscribedのままとなり、プロファイルにはフォアグラウンドプッシュトークンが登録されていることは表示されません。

最初にOSレベルでオプトインしたユーザーがOS設定でプッシュ通知を無効にした場合、次のセッション開始時に以下が発生します:

  • Brazeはそのユーザーをフォアグラウンドプッシュ無効としてマークし、プッシュメッセージの送信を試みなくなります。
  • Foreground Push Enabled for App (iOS)フィルターとForeground Push Enabledセグメンテーションフィルター(ユーザープロファイル上の他のアプリに有効なフォアグラウンドプッシュトークンがない場合)はfalseを返します。

このシナリオでは、バックグラウンドプッシュトークンは引き続き存在するため、セグメンテーションフィルターBackground or Foreground Push Enabled = trueを使用してバックグラウンド(サイレント)プッシュ通知を引き続き送信できます。

ベストプラクティス

Brazeでのプッシュの使用を最適化するための詳細なガイダンスについては、プッシュのベストプラクティスに関する専用記事を参照してください。

New Stuff!