Skip to content

プッシュ通知のイネーブルメントとサブスクリプション

このリファレンス記事では、Braze におけるプッシュ通知のイネーブルメントとサブスクリプションの状態の概念について、iOS、Android、および Webにおける動作の基本的な違いを含めて説明します。

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

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

プッシュ通知のサブスクリプションの状態には、SubscribedOpted-In、およびUnsubscribed の 3 つのオプションがあります。

デフォルトで、プッシュ通知でユーザーがメッセージを受信するには、プッシュ通知のサブスクリプションの状態が Subscribed またはOpted-In のいずれかであり、かつ [プッシュ通知が有効] になっていなければなりません。メッセージの作成時に、この設定をオーバーライドできます。

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

ユーザーのプッシュ通知のサブスクリプションの状態を更新するには、3 つの方法があります。

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

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

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

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

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

Braze でユーザーのプッシュ通知のサブスクリプションの状態を確認するには、3 つの方法があります。

  1. ユーザープロフィール:Braze ダッシュボードの [[ユーザー検索][5]] ページから、個々のユーザープロファイルにアクセスできます。Eメールアドレス、電話番号、または外部ユーザーIDを介して)ユーザーのプロフィールを見つけた後、Engagementタブを選択してユーザーの購読状態を表示し、手動で調整することができる。

  2. Rest API でのエクスポート:[セグメント別のユーザー][segment] または[識別子別のユーザー][identifier]のエクスポートのエンドポイントを使用して、個々のユーザープロファイルを JSON 形式でエクスポートできます。Brazeは、デバイスごとのプッシュ有効化情報を含むプッシュトークンオブジェクトを返す。

プッシュ許可

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

ユーザーの決定は最終的なものであり、却下後に再度依頼することはできないため、[プッシュプライマー][push-primers] の アプリ内メッセージを使用することが、オプトイン率を高めるための重要な戦略です。

ネイティブ OS のプッシュ許可プロンプト

Android

Android 13 以前には、プッシュ通知の送信に許可は不要でした。Android 12 とそれ以前では、最初のセッションで Braze が自動的にプッシュトークンを要求すると、すべてのユーザーが Subscribed と見なされました。この時点で、ユーザーはそのデバイスの有効なプッシュトークンと、Subscribed というデフォルトの購読状態でプッシュ有効になっている。

[Android 13][android-13] 以降、プッシュ許可を求めて、ユーザーから許可を得る必要があります。アプリから手動で、適切なタイミングでユーザーに許可を求めることができますが、そうでない場合は、アプリが通知チャネルを作成するときに、ユーザーに自動的にプロンプトが表示されます。

iOS

![システムの通知センターに通知が表示され、下部に「Yachtrアプリからの通知を受信し続けますか」というメッセージと、その下に「受信し続ける」または「オフにする」の2つのボタンが表示される][ios-provisional-push]{: style=”float:right;max-width:430px;width:40%;margin-left:15px;border:0”}

アプリから暫定プッシュまたは承認プッシュを要求できます。

承認プッシュでは、通知を送信する前にユーザーからの明示的な許可が必要ですが、[暫定プッシュ][provisional-blog]では、音やアラートなしで通知センターに直接、__静かに__通知を送信できます。

暫定承認とサイレントプッシュ{#provisional-push}

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

iOS12 で Apple は[暫定承認][provisional-blog]を導入し、ユーザーが明示的にオプトインする前に、ユーザーの通知センターにサイレントプッシュ通知の送信をブランドに許可したため、メッセージの価値を早期に示す機会が得られました。詳しくは仮承認を参照のこと。

Web

Web の場合、ネイティブブラウザーの許可ダイアログを通じて、ユーザーの明示的なオプトインを要求する必要があります。

iOS や Android の場合、アプリからいつでも許可プロンプトを表示できますが、最近のブラウザーの中には、「ユーザーのジェスチャー」(マウスクリックやキーストローク) でトリガーされたときにのみプロンプトを表示するものもあります。御社サイトでページの読み込み時にプッシュ通知の許可を要求しようとした場合、おそらくブラウザーによって無視されるか、表示されない可能性があります。

その結果、ユーザーがあなたのウェブサイトのどこかをクリックしたときにのみ許可を求めるべきであり、ページがロードされたときにランダムに許可を求めるべきでない。

プッシュトークン

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

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

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

ユーザープロファイルにアプリに関連付けられた有効なフォアグラウンドプッシュトークンがある場合、Brazeはそのユーザーを指定されたアプリの「プッシュ登録済み」とみなす。そこで、Braze にはそのようなユーザーの特定に役立つ特定のセグメンテーションフィルター Push Enabled for App, が用意されています。

1台のデバイスで複数のユーザーが利用できる

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

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

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

ユーザープロファイルの [エンゲージメント] タブにあるプッシュトークンの変更ログ。プッシュトークンが他のユーザーに移動した時点と、そのトークンがリストされます。

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

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

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

「プッシュ通知が有効」フィルター{#push-enabled}

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

Push Enabled フィルターでは以下が考慮されます。

  • Brazeがプッシュ通知を送信する機能(フォアグラウンド・プッシュ・トークン)
  • どのデバイスでもプッシュを受信したいというユーザーの全体的な希望(プッシュ購読状態)

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

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

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

フォアグラウンドプッシュを有効にしているユーザーが OS の設定でプッシュを無効にすると、次のセッションの開始時に次の処理が行われます。

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

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

Androidの場合、Brazeは以下の場合にユーザーのプッシュが無効であるとみなす:

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

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

アプリが仮承認されているか、ユーザーがプッシュ通知をオプトインしている場合、ユーザーはフォアグラウンドプッシュトークンを受信するので、あらゆる種類のプッシュをユーザーに送信できます。Brazeでは、iOSでフォアグラウンドプッシュが有効になっているユーザーを、明示的(アプリレベル)または暫定的(デバイスレベル)にプッシュが有効になっているとみなす。

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

最初に OS レベルでオプトインしたユーザーが、OS の設定でプッシュ通知を無効にしたシナリオでは、次のセッション開始時に以下のことが起こります。

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

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

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

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

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

ベストプラクティス

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

[identifier] :/docs/ja/api/endpoints/export/user_data/post_users_identifier/ [segment] :/docs/ja/api/endpoints/export/user_data/post_users_segment/ [5]: /docs/ja/user_guide/engagement_tools/segments/using_user_search/ [ios-push-prompt] : /docs/ja/assets/img/push_implementation_guide/ios-push-prompt.png?f8e20929b9a91dee0e9a5d39b1b104b9 [android-push-prompt] : /docs/ja/assets/img/push_implementation_guide/android-push-prompt.png?191f599eb60609887b7e226f716f75a5 [web-push-prompt] : /docs/ja/assets/img/push_implementation_guide/web-push-prompt.png?df20161d028603ffadf8677f1456e209 [ios-provisional-push] : /docs/ja/assets/img/push_implementation_guide/ios-provisional-push.png?a1c2c0a99bc6b59c98a2d6dc1555f7e7 [push-primers]: /docs/ja/user_guide/message_building_by_channel/push/push_primer_messages/ [android-13] : /docs/ja/developer_guide/platform_integration_guides/android/android_13/ [provisional-blog] : https://www.braze.com/resources/articles/mastering-provisional-push [user_attributes_object]: /docs/ja/api/objects_filters/user_attributes_object [users-track] :/docs/ja/api/endpoints/user_data/post_user_track/

「このページはどの程度役に立ちましたか?」
New Stuff!