プッシュ通知のトラブルシューティング
Braze SDKのプッシュ通知のトラブルシューティング方法を学習する。
Brazeのプッシュワークフローを理解する
Firebase Cloud Messaging (FCM) サービスは、Android アプリケーションに送信されるプッシュ通知のための Google のインフラストラクチャです。ユーザーのデバイスに対してプッシュ通知を有効にする方法と、Braze がユーザーにプッシュ通知を送信する方法の簡単な構造を次に示します。
---
config:
theme: mc
---
sequenceDiagram
participant Device as User Device
participant App as Android App
participant BrazeSDK as Braze SDK
participant BrazeAPI as Braze Server
participant Firebase as Google Firebase
Note over Device, Firebase: Register Option 1<br/>Register Automatically using `com_braze_firebase_cloud_messaging_registration_enabled` in braze.xml
App ->> Braze: App intializes Braze with the first Braze call<br>This could be automatic session handling
BrazeSDK ->> App: Get push token from Firebase Manager
BrazeSDK ->> BrazeAPI: Send push token to Braze Server
Note right of BrazeAPI: Braze will remove push token from any<br>other user who may have previously<br> been logged in on the same device.
Note over Device, Firebase: Register Option 2<br/>Manual registration.
App ->> BrazeSDK: App sets `Braze.registeredPushToken`
BrazeSDK ->> BrazeAPI: Send push token to Braze Server
Note right of BrazeAPI: Braze will remove push token from any<br>other user who may have previously<br> been logged in on the same device.
Note over Device, Firebase: Push permission
BrazeAPI ->> BrazeSDK: In-App Message containing push prompt
BrazeSDK -> App: In-App Message is displayed
App -> BrazeSDK: User requests permissions
BrazeSDK -> App: Displays the Push Authorization prompt
BrazeSDK -> BrazeAPI: If authorized and `com_braze_optin_when_push_authorized`, Opt-In value is sent.
Note over Device, Firebase: Push Notification Is Sent
BrazeAPI ->> Firebase: Sends push message
Firebase ->> Device: Push message sent
Device ->> App: Android will send the push to the App.<br>This could be blocked to Do Not Disturb, Power Saving Mode, etc.
App ->> BrazeSDK: Message is sent to BrazeFirebaseMessagingService
BrazeSDK ->> Device: SDK will check if the push is from Braze.<br>If so, push data is transformed into a Push Notfication and displayed.
ステップ 1:Google Cloud APIキーを構成する
アプリの開発では、Firebase 送信者 ID を Braze Android SDK に提供する必要があります。また、サーバーアプリケーションの API キーを Braze ダッシュボードに提供する必要があります。Braze はこの API キーを使用してデバイスにメッセージを送信します。Google Developer のコンソールで FCM サービスが有効になっていることも確認する必要があります。
このステップでよくある間違いは、REST API キーの代わりにアプリ識別子の API キーを使用することです。
ステップ 2:デバイスが FCM に登録して Braze にプッシュトークンを提供する
一般的な統合では、Braze Android SDK が FCM 機能のデバイス登録を処理します。これは通常、アプリを初めて開いた後すぐに行われます。登録後、Braze に FCM 登録 ID が提供されます。この ID は、そのデバイスにメッセージを送信するために使用されます。ユーザーの登録 ID が保存され、そのユーザーが以前にアプリのプッシュトークンを持っていなかった場合は、ユーザーが「プッシュ登録」されます。
ステップ 3:Braze プッシュキャンペーンを開始する
プッシュキャンペーンが開始されると、Braze は FCM にメッセージの配信リクエストを行います。Braze は、ダッシュボードにコピーされた API キーを使用して認証を行い、提供されたプッシュトークンにプッシュ通知を送信できることを確認します。
ステップ 4:無効なトークンを削除する
メッセージを送信しようとしたプッシュトークンのいずれかが無効であると FCM から通知された場合は、関連付けられていたユーザープロファイルからそれらのトークンを削除します。ユーザーが他にプッシュトークンを持っていない場合は、[セグメント] ページの下に「プッシュ登録済み」として表示されなくなります。
FCM の詳細については、クラウドメッセージングを参照してください。
プッシュエラーログの活用
Braze は、プッシュ通知エラーをメッセージアクティビティログに出力します。このエラーログは、キャンペーンが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージをクリックすると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。
トラブルシューティングのシナリオ
プッシュが送信されない
次の状況により、プッシュメッセージが送信されない可能性があります。
- 間違った Google Cloud Platform プロジェクト ID (間違った送信者 ID) の認証情報が存在します。
- 認証情報の権限スコープが間違っています。
- 間違った認証情報を間違った Braze ワークスペース (間違った送信者 ID) にアップロードしました。
プッシュメッセージの送信を妨げるその他の問題については、ユーザーガイドを参照のこと:プッシュ通知のトラブルシューティング.
Braze ダッシュボードに「プッシュ登録された」ユーザーが表示されない (メッセージ送信前)
アプリがプッシュ通知を許可するように正しく構成されていることを確認してください。チェックすべき一般的な障害点は次のとおりです。
送信者 ID が正しくない
正しい FCM 送信者 ID が braze.xml
ファイルに含まれていることを確認してください。送信者 ID が正しくないと、ダッシュボードのメッセージアクティビティログに MismatchSenderID
エラーが報告されます。
Braze 登録が行われない
FCM 登録は Braze の外部で処理されるため、登録の失敗は次の 2 つのタイミングでのみ起こります。
- FCM への登録中
- FCM で生成されたプッシュトークンを Braze に渡すとき
ブレークポイントを設定するか、ログを記録して、FCM で生成されたプッシュトークンが Braze に送信されていることを確認してください。トークンが正しく生成されない場合、またはまったく生成されない場合は、FCM ドキュメントを参照することをお勧めします。
Google Play 開発者サービスが存在しない
FCM プッシュが正しく機能するためには、Google Play 開発者サービスがデバイス上に存在する必要があります。Google Play 開発者サービスがデバイス上にない場合、プッシュ登録は行われません。
注:Google API がインストールされていない Android エミュレーターには、Google Play 開発者サービスはインストールされません。
デバイスがインターネットに接続されていない
デバイスのインターネット接続が良好で、プロキシ経由でネットワークトラフィックを送信していないことを確認してください。
プッシュ通知をタップしてもアプリが開かない
com_braze_handle_push_deep_links_automatically
が true
または false
に設定されているかどうか確認します。プッシュ通知がタップされたときに Braze がアプリとディープリンクを自動的に開くようにするには、braze.xml
ファイルで com_braze_handle_push_deep_links_automatically
を true
に設定します。
com_braze_handle_push_deep_links_automatically
がデフォルトの false
に設定されている場合は、Braze プッシュコールバックを使用して、プッシュの受信および開封インテントをリッスンし、処理する必要があります
プッシュ通知がバウンスされる
プッシュ通知が配信されない場合は、開発者コンソールを見て、通知がバウンスされていないことを確認してください。以下は、開発者コンソールに記録される可能性のある一般的なエラーの説明です。
エラー:MismatchSenderID
MismatchSenderID
は認証が失敗したことを示します。Firebase 送信者 ID と FCM API キーが正しいことを確認してください。
エラー:InvalidRegistration
InvalidRegistration
は、不正な形式のプッシュトークンが原因で発生する可能性があります。
- [Firebase Cloud Messaging] からの有効なプッシュトークンを Braze に渡すようにしてください。
エラー:NotRegistered
-
NotRegistered
は通常、アプリがデバイスから削除されたときに発生します。Braze はアプリがデバイスからアンインストールされたことを通知するために、内部でNotRegistered
を使用します。 -
NotRegistered
は、複数の登録が行われ、2 番目の登録によって最初のトークンが無効になった場合にも発生する可能性があります。
プッシュ通知は送信されるが、ユーザーのデバイスに表示されない
この問題が発生する理由はいくつか考えられます。
アプリケーションが強制終了された
システム設定からアプリケーションを強制終了すると、プッシュ通知は送信されません。アプリを再度起動すると、デバイスがプッシュ通知を受信できるようになります。
BrazeFirebaseMessagingService が登録されていない
プッシュ通知を表示するには、BrazeFirebaseMessagingService が AndroidManifest.xml
に適切に登録されている必要があります。
1
2
3
4
5
6
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
ファイアウォールがプッシュをブロックしている
Wi-Fi 経由でプッシュをテストしている場合は、FCM がメッセージを受信するために必要なポートがファイアウォールによってブロックされている可能性があります。ポート 5228
、5229
、5230
が開いていることを確認します。また、FCM は IP を指定しないため、Google の 15169
の ASN に記載された IP ブロックに含まれるすべての IP アドレスへの発信接続をファイアウォールが受け入れることも許可する必要があります。
カスタム通知ファクトリーが null を返す
[カスタム通知ファクトリー] を実装している場合は、null
を返していないことを確認します。null が返されると、通知が表示されなくなります。
「プッシュ登録済み」ユーザーがメッセージ送信後に有効でなくなる
この問題が発生する理由はいくつか考えられます。
アプリケーションがアンインストールされた
ユーザーがアプリケーションをアンインストールしました。これにより、FCM プッシュトークンが無効になります。
無効な Firebase Cloud Messaging サーバーキー
Braze ダッシュボードで提供された Firebase Cloud Messaging サーバーキーが無効です。提供された送信者 ID は、アプリの braze.xml
ファイルで参照されている送信者 ID と一致する必要があります。サーバーキーと送信者 ID は、Firebase コンソールの次の場所にあります。
プッシュクリックが記録されない
Braze はプッシュクリックを自動的に記録するため、このシナリオは比較的まれです。
プッシュクリックがログに記録されない場合は、プッシュクリックデータがまだサーバーにフラッシュされていない可能性があります。Braze は、ネットワーク接続の強度に基づいてフラッシュの頻度を調整します。ネットワーク接続が良好であれば、ほとんどの状況でプッシュクリックデータが 1 分以内にサーバーに到着します。
ディープリンクが機能しない
ディープリンク構成を確認する
ディープリンクは、[ADBでテスト] することができます。次のコマンドを使用してディープリンクをテストすることをお勧めします。
adb shell am start -W -a android.intent.action.VIEW -d "THE_DEEP_LINK" THE_PACKAGE_NAME
ディープリンクが機能しない場合は、ディープリンクの構成が正しくない可能性があります。構成が正しくないディープリンクは、Braze プッシュ経由で送信されると正しく機能しません。
カスタム処理ロジックを検証する
ディープリンクが [ADB では正しく動作する] が、Braze プッシュからは機能しない場合は、[カスタムプッシュ開封処理] が実装されているかどうかを確認します。実装されている場合は、カスタム処理コードが受信ディープリンクを適切に処理していることを確認してください。
バックスタック動作を無効にする
ディープリンクが [ADB では正しく動作する] が、Braze プッシュでは機能しない場合は、[バックスタック] を無効にしてみてください。そのためには、braze.xml を更新して以下を含めます。
1
<bool name="com_braze_push_deep_link_back_stack_activity_enabled">false</bool>
Braze/APNs のワークフローについて
Apple プッシュ通知サービス (APN) は、Apple のプラットフォームで実行されているアプリケーションへのプッシュ通知を送信するためのインフラです。ユーザーのデバイスに対してプッシュ通知を有効にする方法と、Braze がユーザーにプッシュ通知を送信する方法の簡単な構造を次に示します。
- プッシュ証明書とプロビジョニングプロファイルを構成します
- デバイスは APNs に登録し、Braze にプッシュトークンを提供します
- Braze プッシュキャンペーンを開始します
- Braze は無効なトークンを削除します
ステップ1:プッシュ証明書とプロビジョニングプロファイルの構成
アプリの開発では、プッシュ通知を有効にするには SSL 証明書を作成する必要があります。この証明書はアプリのビルドに使用されるプロビジョニングプロファイルに含まれ、Braze ダッシュボードにアップロードする必要もあります。証明書を使用すると、、Braze は APNs に対して、あなたに代わってプッシュ通知を送信することが許可されていることを伝えることができます。
プロビジョニングプロファイルと証明書には、開発と配布の2つのタイプがあります。混乱を避けるために、配布プロファイルと証明書だけを使用することをお勧めします。開発と配布で異なるプロファイルと証明書を使用することを選択した場合は、ダッシュボードにアップロードされた証明書が現在使用しているプロビジョニングプロファイルと一致することを確認してください。
プッシュ証明書の環境 (開発環境と本番環境) を変更しないでください。プッシュ証明書を間違った環境に変更すると、ユーザーのプッシュトークンが誤って削除され、プッシュで到達できなくなる可能性があります。
ステップ 2:デバイスは APNs に登録し、Braze にプッシュトークンを提供します
ユーザーがアプリを開くと、プッシュ通知を受け入れるように求められます。このプロンプトを受け入れると、APNs はその特定のデバイスのプッシュトークンを生成します。Swift SDK は、デフォルトの [自動フラッシュポリシー] を使用して、アプリのプッシュトークンを即時かつ非同期に送信します。ユーザーにプッシュトークンを関連付けると、[エンゲージメント] タブのユーザープロファイルのダッシュボードに「プッシュ登録済み」と表示され、Braze キャンペーンからプッシュ通知を受け取る資格が得られます。
macOS 13から、一部のデバイスでは、Xcode 14上で動作するiOS 16シミュレーターでプッシュ通知をテストできるようになった。詳細については、Xcode 14 リリース ノートを参照してください。
プッシュトークン生成に関する考察
- ユーザーがあなたのアプリを別のデバイスにインストールした場合、別のトークンが作成され、同じようにキャプチャされる。
- ユーザーがアプリを再インストールすると、新しいトークンが生成され、Brazeに渡される。しかし、APNとBrazeは、元のトークンを有効なものとして記録することができる。
- ユーザーがアプリをアンインストールしても、トークンはAPNによって破棄されるまで有効なものとして表示される。
- ある時点で、APNは古いトークンを引退させる。Brazeはこれをコントロールすることも、見ることもできない。
ステップ 3:Braze プッシュキャンペーンの開始
プッシュキャンペーンが開始されると、Braze は APNs にメッセージの配信リクエストを行います。具体的には、「ユーザーの最新のデバイスに送信」が選択されていない限り、リクエストは現在有効なプッシュトークンごとにAPNに渡される。BrazeがAPNから正常なレスポンスを受信した後、ユーザープロファイルに配信成功のログを記録するが、以下のような理由でユーザーが実際のメッセージを受信していない可能性がある:
- デバイスの電源は切れている。
- 端末がインターネット(Wi-Fiまたは携帯電話)に接続されていない。
- 彼らは最近アプリをアンインストールした。
Braze は、ダッシュボードにアップロードされた SSL プッシュ証明書を使用して認証を行い、提供されたプッシュトークンへのプッシュ通知の送信が許可されていることを確認します。デバイスがオンラインの場合は、キャンペーンが送信された後すぐに通知が受信されます。なお、Braze は通知のデフォルトの APNs 有効期限を30日に設定していることに注意してください。
ステップ4: 無効なトークンを削除する
APNs が、メッセージを送信しようとしていたプッシュトークンのいずれかが無効であることを通知した場合、それらのトークンは関連付けられたユーザープロファイルから削除されます。
APNはトークンの無効化イベントを即座にレポートしないので、トークンが登録されなくなったとしても、最初は成功ステータスを返すのが普通である。APNは、ユーザーのプライバシーを保護し、アプリのアンインストール追跡を防ぐために、無効なトークンに対して410
ステータスを返すのを、ランダムなスケジュールで意図的に遅らせている。APNsが410
ステータスを返すまで、未登録トークンへの通知を安全に送信し続けることができる。
プッシュのエラーログを使う
Message Activity Log を使用すると、キャンペーンや送信に関連付けられているメッセージ(特にエラーメッセージ) を確認できます。これには、プッシュ通知エラーも含まれます。このエラーログは、キャンペーンが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージをクリックすると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。
ここでよく見かけるエラーとしては、[「プッシュトークンへの登録されていない送信の受信」] など、ユーザー固有の通知があります。
さらに、Braze は [エンゲージメント] タブのユーザープロファイルにプッシュ通知の変更ログも提供します。この変更ログは、トークンの無効化、プッシュ登録エラー、トークンの新規ユーザーへの移動などのプッシュ登録動作に関するインサイトを提供します。
メッセージ・アクティビティ・ログのエラー
プッシュトークン {#received-unregistered-sending} への未登録送信を受信した
- メソッド
AppDelegate.braze?.notifications.register(deviceToken:)
から Braze に送信されているプッシュトークンが有効であることを確認してください。メッセージアクティビティログを見ると、プッシュトークンを確認できます。これは6e407a9be8d07f0cdeb9e724733a89445f57a89ec890d63867c482a483506fa6
のようになり、文字と数字が混在する長い文字列になります。プッシュトークンが異なるように見える場合は、Braze にプッシュトークンを送信するための [コード] を確認してください。 - プッシュプロビジョニングプロファイルがテスト対象の環境と一致することを確認します。ユニバーサル証明書は、開発または実稼働の APNs 環境のいずれかに送信するように Braze ダッシュボードで構成できます。実稼働アプリ用の開発証明書または開発アプリ用の実稼働証明書は動作しません。
- Braze にアップロードしたプッシュトークンが、プッシュトークンの送信元のアプリのビルドに使用したプロビジョニングプロファイルと一致することを確認します。
デバイストークンがトピック用ではない
このエラーは、アプリのプッシュ証明書とバンドル ID が一致しないことを示しています。Brazeにアップロードしたプッシュ証明書が、プッシュトークンの送信元となるアプリのビルドに使用したプロビジョニングプロファイルと一致することを確認します。
プッシュトークンへの BadDeviceToken の送信
BadDeviceToken
は APNs のエラーコードであり、Braze から発信されたものではありません。この応答が返されるには、次のようなさまざまな理由が考えられます。
- アプリは、ダッシュボードにアップロードされた認証情報に対して無効なプッシュトークンを受け取った。
- このワークスペースではプッシュが無効になった。
- ユーザーがプッシュをオプトアウトした。
- アプリがアンインストールされた。
- Apple がプッシュトークンを更新したため、古いトークンが無効になった。
- アプリは本番環境用にビルドされていますが、Braze にアップロードされたプッシュ認証情報は開発環境用に設定されます (または逆の場合もあります)。
プッシュ登録に関する問題
プッシュ登録プロンプトが表示されない
アプリケーションでプッシュ通知の登録を求めるメッセージが表示されない場合は、プッシュ登録の統合に問題がある可能性があります。documentationに従っており、プッシュ登録が正しく統合されていることを確認してください。コードにブレークポイントを設定して、プッシュ登録コードを確実に実行することもできます。
ダッシュボードに「プッシュ登録」されたユーザーが表示されない(メッセージ送信前)
アプリがプッシュ通知を許可するように正しく構成されていることを確認してください。チェックすべき一般的な障害点は次のとおりです。
- アプリがプッシュ通知を許可するように求めるメッセージを表示していることを確認します。通常、このプロンプトはアプリを初めて起動したときに表示されますが、他の場所に表示されるようにプログラムすることもできます。表示されるべき場所に表示されない場合は、アプリのプッシュ機能の基本構成に問題がある可能性があります。
- push integrationの手順が正常に完了したことを確認します。
- アプリのビルドに使用されたプロビジョニングプロファイルにプッシュの権限が含まれていることを確認します。Apple 開発者アカウントから利用可能なプロビジョニングプロファイルをすべてプルダウンしていることを確認してください。これを確認するには、次の手順を実行します。
- Xcodeで、[環境設定] > [アカウント] に移動します (または、キーボードショートカットコマンド+, を使用します)。
- 開発者アカウントに使用する Apple ID を選択し、[詳細を表示] をクリックします。
- 次のページで、[更新] をクリックし、使用可能なすべてのプロビジョニングプロファイルをプルしていることを確認します。
- アプリで適切に有効なプッシュ機能があることを確認します。
- プッシュプロビジョニングプロファイルがテスト環境と一致することを確認します。ユニバーサル証明書は、開発または実稼働の APNs 環境のいずれかに送信するように Braze ダッシュボードで構成できます。実稼働アプリ用の開発証明書または開発アプリ用の実稼働証明書は動作しません。
- コードにブレークポイントを設定して、
registerPushToken
メソッドを呼び出していることを確認します。 - デバイスを使ってテストし(プッシュはシミュレーターでは機能しない)、ネットワーク接続が良好であることを確認する。
プッシュ通知は送信されたが、ユーザーのデバイスに表示されない
「プッシュ登録済み」ユーザーがメッセージ送信後に有効でなくなる
これは、ユーザーが無効なプッシュトークンを持っていたことを示している可能性があります。これにはいくつかの理由が考えられます。
ダッシュボードとアプリ証明書が一致していない
ダッシュボードでアップロードしたプッシュ証明書が、アプリのビルドに使用したプロビジョニングプロファイルのものと異なる場合、APNs はトークンを拒否します。別のテスト通知を試みる前に、正しい証明書をアップロードし、アプリで別のセッションを完了していることを確認します。
アプリケーションがアンインストールされた
ユーザーがアプリケーションをアンインストールした場合、プッシュトークンは無効となり、次回の送信時に削除されます。
プロビジョニングプロファイルの再生成
最後の手段として、最初からやり直してまったく新しいプロビジョニングプロファイルを作成すると、複数の環境、プロファイル、およびアプリを同時に操作することによって発生する構成エラーを解消できます。プッシュ通知の設定には多くの “動く部分 “があるので、最初からやり直した方がいい場合もある。また、トラブルシューティングを続ける必要がある場合は、問題を切り分けるのに役立ちます。
「プッシュ登録された」ユーザーに配信されないメッセージ
アプリがフォアグラウンドにある
UserNotifications
フレームワークを介してプッシュを統合していない iOS バージョンでは、プッシュメッセージの受信時にアプリがフォアグラウンドにある場合、そのメッセージは表示されません。テストメッセージを送信する前に、テストデバイスでアプリをバックグラウンドにする必要があります。
テスト通知のスケジュールが正しくない
テストメッセージに設定したスケジュールを確認します。ローカルタイムゾーン配信またはインテリジェントタイミングに設定されている場合、メッセージがまだ受信されていない (または受信時にアプリをフォアグラウンドにしていた) だけかもしれません。
テスト対象のアプリに対してユーザーが「プッシュ登録」されていない
テストメッセージを送信しようとしてしている相手のユーザーのプロファイルを確認します。[エンゲージメント] タブの下に「プッシュ可能なアプリ」のリストがあるはずです。テストメッセージを送信しようとしているアプリがこのリストにあることを確認します。ユーザーがワークスペース内の任意のアプリのプッシュトークンを持っている場合は「プッシュ登録済み」と表示されるため、誤検知の可能性があります。
以下は、プッシュ登録に問題があるか、プッシュ後にユーザーのトークンが APNs によって無効として Braze に返されたことを示します。
プッシュクリックが記録されない
- [プッシュ統合のステップ] に従っていることを確認します。
- Braze では、フォアグラウンドでサイレント受信したプッシュ通知 (
UserNotifications
フレームワーク以前のデフォルトのフォアグラウンドプッシュ動作) は処理されません。つまり、リンクは開かれず、プッシュクリックも記録されない。アプリケーションがUserNotifications
フレームワークをまだ統合していない場合、アプリケーション状態がUIApplicationStateActive
のときに Braze はプッシュ通知を処理しません。お使いのアプリで [プッシュ処理メソッド] の呼び出しが遅延しないようにしてください。そうしなければ、Swift SDK はプッシュ通知をサイレントフォアグラウンドプッシュイベントとして扱い、それらを処理しない場合があります。
ディープリンクが機能しない
プッシュクリックからのWebリンクが開かない
プッシュ通知のリンクは、Web ビューで開くには ATS 準拠である必要があります。WebリンクがHTTPSを使用していることを確認します。詳細については、ATSコンプライアンスを参照のこと。
プッシュクリックからディープリンクが開かない
ディープリンクを扱うコードのほとんどはプッシュ通知の開封も扱います。まず、プッシュ通知の開封がログに記録されていることを確認します。そうでない場合は、その問題を修正する(修正によってリンク処理が修正されることが多いため)。
開封が記録されている場合は、ディープリンク全般の問題なのか、ディープリンクのプッシュクリック処理の問題なのかを確認してください。そのためには、アプリ内メッセージクリックからのディープリンクが機能するかテストします。
Troubleshooting
If you’re experiencing issues after setting up push notifications, consider the following:
- Web push notifications require that your site be HTTPS.
- Not all browsers can receive push messages. Ensure that
braze.isPushSupported()
returnstrue
in the browser. - If a user has denied a site push access, they won’t be prompted for permission again unless they remove the denied status from their browser preferences.
Brazeのプッシュワークフローを理解する
Firebase Cloud Messaging (FCM) サービスは、Android アプリケーションに送信されるプッシュ通知のための Google のインフラストラクチャです。ユーザーのデバイスに対してプッシュ通知を有効にする方法と、Braze がユーザーにプッシュ通知を送信する方法の簡単な構造を次に示します。
---
config:
theme: mc
---
sequenceDiagram
participant Device as User Device
participant App as Android App
participant BrazeSDK as Braze SDK
participant BrazeAPI as Braze Server
participant Firebase as Google Firebase
Note over Device, Firebase: Register Option 1<br/>Register Automatically using `com_braze_firebase_cloud_messaging_registration_enabled` in braze.xml
App ->> Braze: App intializes Braze with the first Braze call<br>This could be automatic session handling
BrazeSDK ->> App: Get push token from Firebase Manager
BrazeSDK ->> BrazeAPI: Send push token to Braze Server
Note right of BrazeAPI: Braze will remove push token from any<br>other user who may have previously<br> been logged in on the same device.
Note over Device, Firebase: Register Option 2<br/>Manual registration.
App ->> BrazeSDK: App sets `Braze.registeredPushToken`
BrazeSDK ->> BrazeAPI: Send push token to Braze Server
Note right of BrazeAPI: Braze will remove push token from any<br>other user who may have previously<br> been logged in on the same device.
Note over Device, Firebase: Push permission
BrazeAPI ->> BrazeSDK: In-App Message containing push prompt
BrazeSDK -> App: In-App Message is displayed
App -> BrazeSDK: User requests permissions
BrazeSDK -> App: Displays the Push Authorization prompt
BrazeSDK -> BrazeAPI: If authorized and `com_braze_optin_when_push_authorized`, Opt-In value is sent.
Note over Device, Firebase: Push Notification Is Sent
BrazeAPI ->> Firebase: Sends push message
Firebase ->> Device: Push message sent
Device ->> App: Android will send the push to the App.<br>This could be blocked to Do Not Disturb, Power Saving Mode, etc.
App ->> BrazeSDK: Message is sent to BrazeFirebaseMessagingService
BrazeSDK ->> Device: SDK will check if the push is from Braze.<br>If so, push data is transformed into a Push Notfication and displayed.
ステップ 1:Google Cloud APIキーを構成する
アプリの開発では、Firebase 送信者 ID を Braze Android SDK に提供する必要があります。また、サーバーアプリケーションの API キーを Braze ダッシュボードに提供する必要があります。Braze はこの API キーを使用してデバイスにメッセージを送信します。Google Developer のコンソールで FCM サービスが有効になっていることも確認する必要があります。
このステップでよくある間違いは、REST API キーの代わりにアプリ識別子の API キーを使用することです。
ステップ 2:デバイスが FCM に登録して Braze にプッシュトークンを提供する
一般的な統合では、Braze Android SDK が FCM 機能のデバイス登録を処理します。これは通常、アプリを初めて開いた後すぐに行われます。登録後、Braze に FCM 登録 ID が提供されます。この ID は、そのデバイスにメッセージを送信するために使用されます。ユーザーの登録 ID が保存され、そのユーザーが以前にアプリのプッシュトークンを持っていなかった場合は、ユーザーが「プッシュ登録」されます。
ステップ 3:Braze プッシュキャンペーンを開始する
プッシュキャンペーンが開始されると、Braze は FCM にメッセージの配信リクエストを行います。Braze は、ダッシュボードにコピーされた API キーを使用して認証を行い、提供されたプッシュトークンにプッシュ通知を送信できることを確認します。
ステップ 4:無効なトークンを削除する
メッセージを送信しようとしたプッシュトークンのいずれかが無効であると FCM から通知された場合は、関連付けられていたユーザープロファイルからそれらのトークンを削除します。ユーザーが他にプッシュトークンを持っていない場合は、[セグメント] ページの下に「プッシュ登録済み」として表示されなくなります。
FCM の詳細については、クラウドメッセージングを参照してください。
プッシュエラーログの活用
Braze は、プッシュ通知エラーをメッセージアクティビティログに出力します。このエラーログは、キャンペーンが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージをクリックすると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。
トラブルシューティングのシナリオ
プッシュが送信されない
次の状況により、プッシュメッセージが送信されない可能性があります。
- 間違った Google Cloud Platform プロジェクト ID (間違った送信者 ID) の認証情報が存在します。
- 認証情報の権限スコープが間違っています。
- 間違った認証情報を間違った Braze ワークスペース (間違った送信者 ID) にアップロードしました。
プッシュメッセージの送信を妨げるその他の問題については、ユーザーガイドを参照のこと:プッシュ通知のトラブルシューティング.
Braze ダッシュボードに「プッシュ登録された」ユーザーが表示されない (メッセージ送信前)
アプリがプッシュ通知を許可するように正しく構成されていることを確認してください。チェックすべき一般的な障害点は次のとおりです。
送信者 ID が正しくない
正しい FCM 送信者 ID が braze.xml
ファイルに含まれていることを確認してください。送信者 ID が正しくないと、ダッシュボードのメッセージアクティビティログに MismatchSenderID
エラーが報告されます。
Braze 登録が行われない
FCM 登録は Braze の外部で処理されるため、登録の失敗は次の 2 つのタイミングでのみ起こります。
- FCM への登録中
- FCM で生成されたプッシュトークンを Braze に渡すとき
ブレークポイントを設定するか、ログを記録して、FCM で生成されたプッシュトークンが Braze に送信されていることを確認してください。トークンが正しく生成されない場合、またはまったく生成されない場合は、FCM ドキュメントを参照することをお勧めします。
Google Play 開発者サービスが存在しない
FCM プッシュが正しく機能するためには、Google Play 開発者サービスがデバイス上に存在する必要があります。Google Play 開発者サービスがデバイス上にない場合、プッシュ登録は行われません。
注:Google API がインストールされていない Android エミュレーターには、Google Play 開発者サービスはインストールされません。
デバイスがインターネットに接続されていない
デバイスのインターネット接続が良好で、プロキシ経由でネットワークトラフィックを送信していないことを確認してください。
プッシュ通知をタップしてもアプリが開かない
com_braze_handle_push_deep_links_automatically
が true
または false
に設定されているかどうか確認します。プッシュ通知がタップされたときに Braze がアプリとディープリンクを自動的に開くようにするには、braze.xml
ファイルで com_braze_handle_push_deep_links_automatically
を true
に設定します。
com_braze_handle_push_deep_links_automatically
がデフォルトの false
に設定されている場合は、Braze プッシュコールバックを使用して、プッシュの受信および開封インテントをリッスンし、処理する必要があります
プッシュ通知がバウンスされる
プッシュ通知が配信されない場合は、開発者コンソールを見て、通知がバウンスされていないことを確認してください。以下は、開発者コンソールに記録される可能性のある一般的なエラーの説明です。
エラー:MismatchSenderID
MismatchSenderID
は認証が失敗したことを示します。Firebase 送信者 ID と FCM API キーが正しいことを確認してください。
エラー:InvalidRegistration
InvalidRegistration
は、不正な形式のプッシュトークンが原因で発生する可能性があります。
- [Firebase Cloud Messaging] からの有効なプッシュトークンを Braze に渡すようにしてください。
エラー:NotRegistered
-
NotRegistered
は通常、アプリがデバイスから削除されたときに発生します。Braze はアプリがデバイスからアンインストールされたことを通知するために、内部でNotRegistered
を使用します。 -
NotRegistered
は、複数の登録が行われ、2 番目の登録によって最初のトークンが無効になった場合にも発生する可能性があります。
プッシュ通知は送信されるが、ユーザーのデバイスに表示されない
この問題が発生する理由はいくつか考えられます。
アプリケーションが強制終了された
システム設定からアプリケーションを強制終了すると、プッシュ通知は送信されません。アプリを再度起動すると、デバイスがプッシュ通知を受信できるようになります。
BrazeFirebaseMessagingService が登録されていない
プッシュ通知を表示するには、BrazeFirebaseMessagingService が AndroidManifest.xml
に適切に登録されている必要があります。
1
2
3
4
5
6
<service android:name="com.braze.push.BrazeFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
ファイアウォールがプッシュをブロックしている
Wi-Fi 経由でプッシュをテストしている場合は、FCM がメッセージを受信するために必要なポートがファイアウォールによってブロックされている可能性があります。ポート 5228
、5229
、5230
が開いていることを確認します。また、FCM は IP を指定しないため、Google の 15169
の ASN に記載された IP ブロックに含まれるすべての IP アドレスへの発信接続をファイアウォールが受け入れることも許可する必要があります。
カスタム通知ファクトリーが null を返す
[カスタム通知ファクトリー] を実装している場合は、null
を返していないことを確認します。null が返されると、通知が表示されなくなります。
「プッシュ登録済み」ユーザーがメッセージ送信後に有効でなくなる
この問題が発生する理由はいくつか考えられます。
アプリケーションがアンインストールされた
ユーザーがアプリケーションをアンインストールしました。これにより、FCM プッシュトークンが無効になります。
無効な Firebase Cloud Messaging サーバーキー
Braze ダッシュボードで提供された Firebase Cloud Messaging サーバーキーが無効です。提供された送信者 ID は、アプリの braze.xml
ファイルで参照されている送信者 ID と一致する必要があります。サーバーキーと送信者 ID は、Firebase コンソールの次の場所にあります。
プッシュクリックが記録されない
Braze はプッシュクリックを自動的に記録するため、このシナリオは比較的まれです。
プッシュクリックがログに記録されない場合は、プッシュクリックデータがまだサーバーにフラッシュされていない可能性があります。Braze は、ネットワーク接続の強度に基づいてフラッシュの頻度を調整します。ネットワーク接続が良好であれば、ほとんどの状況でプッシュクリックデータが 1 分以内にサーバーに到着します。
ディープリンクが機能しない
ディープリンク構成を確認する
ディープリンクは、[ADBでテスト] することができます。次のコマンドを使用してディープリンクをテストすることをお勧めします。
adb shell am start -W -a android.intent.action.VIEW -d "THE_DEEP_LINK" THE_PACKAGE_NAME
ディープリンクが機能しない場合は、ディープリンクの構成が正しくない可能性があります。構成が正しくないディープリンクは、Braze プッシュ経由で送信されると正しく機能しません。
カスタム処理ロジックを検証する
ディープリンクが [ADB では正しく動作する] が、Braze プッシュからは機能しない場合は、[カスタムプッシュ開封処理] が実装されているかどうかを確認します。実装されている場合は、カスタム処理コードが受信ディープリンクを適切に処理していることを確認してください。
バックスタック動作を無効にする
ディープリンクが [ADB では正しく動作する] が、Braze プッシュでは機能しない場合は、[バックスタック] を無効にしてみてください。そのためには、braze.xml を更新して以下を含めます。
1
<bool name="com_braze_push_deep_link_back_stack_activity_enabled">false</bool>
トラブルシューティング
プッシュはタスクスイッチャーからアプリが閉じられた後に表示されません
アプリがタスクスイッチャーから閉じられた後にプッシュ通知が表示されなくなった場合、アプリがデバッグモードになっている可能性があります。Xamarin はデバッグモードでスキャフォールディングを追加し、プロセスが強制終了された後にアプリがプッシュを受信できないようにします。アプリをリリースモードで実行すると、タスクスイッチャーからアプリを閉じた後でもプッシュ通知が表示されるはずです。
カスタム通知ファクトリが正しく設定されていません
カスタム通知ファクトリ (およびすべてのデリゲート) は、C# と Javaの境界を越えて適切に機能するために Java.Lang.Object
を拡張する必要があります。詳細については、Javaインターフェイスの実装に関するXamarinを参照してください。