Skip to content

プッシュ通知のトラブルシューティング

Braze SDKのプッシュ通知のトラブルシューティング方法について説明します。

トラブルシューティング

プッシュ通知の設定後に問題が発生している場合は、以下の点を確認するといい。

  • Web プッシュ通知では、サイトで HTTPS を使用する必要があります。
  • すべてのブラウザがプッシュメッセージを受信できるわけではない。ブラウザでbraze.isPushSupported()true を返すことを確認する。
  • Firefoxなどの一部のブラウザでは、プッシュ通知に画像が表示されない。ブラウザのサポートに関する詳細は、MDNの通知画像のドキュメントを参照せよ。
  • ユーザーがサイトのプッシュアクセスを拒否した場合、ブラウザの環境設定から拒否ステータスを削除しない限り、再度許可を求めるプロンプトが表示されることはない。

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 initializes 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 Notification and displayed.

ステップ 1:Google Cloud APIキーを構成する

アプリの開発では、Firebase 送信者 ID を Braze Android SDK に提供する必要があります。また、サーバーアプリケーションの API キーを Braze ダッシュボードに提供する必要があります。Braze はこの API キーを使用してデバイスにメッセージを送信します。Google Developer のコンソールで FCM サービスが有効になっていることも確認する必要があります。

ステップ 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 つのタイミングでのみ起こります。

  1. FCM への登録中
  2. FCM で生成されたプッシュトークンを Braze に渡すとき

ブレークポイントを設定するか、ログを記録して、FCM で生成されたプッシュトークンが Braze に送信されていることを確認してください。トークンが正しく生成されない場合、またはまったく生成されない場合は、FCM ドキュメントを参照することをお勧めします。

Google Play 開発者サービスが存在しない

FCM プッシュが正しく機能するためには、Google Play 開発者サービスがデバイス上に存在する必要があります。Google Play 開発者サービスがデバイス上にない場合、プッシュ登録は行われません。

注:Google API がインストールされていない Android エミュレーターには、Google Play 開発者サービスはインストールされません。

デバイスがインターネットに接続されていない

デバイスのインターネット接続が良好で、プロキシ経由でネットワークトラフィックを送信していないことを確認してください。

プッシュ通知をタップしてもアプリが開かない

com_braze_handle_push_deep_links_automaticallytrue または false に設定されているかどうか確認します。プッシュ通知がタップされたときに Braze がアプリとディープリンクを自動的に開くようにするには、braze.xml ファイルで com_braze_handle_push_deep_links_automaticallytrue に設定します。

com_braze_handle_push_deep_links_automatically がデフォルトの false に設定されている場合は、Braze プッシュコールバックを使用して、プッシュの受信および開封インテントをリッスンし、処理する必要があります

プッシュ通知がバウンスされる

プッシュ通知が配信されない場合は、開発者コンソールを見て、通知がバウンスされていないことを確認してください。以下は、開発者コンソールに記録される可能性のある一般的なエラーの説明です。

エラー:MismatchSenderID

MismatchSenderID は認証が失敗したことを示します。Firebase 送信者 ID と FCM API キーが正しいことを確認してください。

エラー:InvalidRegistration

InvalidRegistration は、不正な形式のプッシュトークンが原因で発生する可能性があります。

  1. [Firebase Cloud Messaging] からの有効なプッシュトークンを Braze に渡すようにしてください。

エラー:NotRegistered

  1. NotRegistered は通常、アプリがデバイスから削除されたときに発生します。Braze はアプリがデバイスからアンインストールされたことを通知するために、内部で NotRegistered を使用します。

  2. NotRegistered は、複数の登録が行われ、2 番目の登録によって最初のトークンが無効になった場合にも発生する可能性があります。

プッシュ通知は送信されるが、ユーザーのデバイスに表示されない

この問題が発生する理由はいくつか考えられます。

アプリケーションが強制終了された

システム設定からアプリケーションを強制終了すると、プッシュ通知は送信されません。アプリを再度起動すると、デバイスがプッシュ通知を受信できるようになります。

BrazeFirebaseMessagingService が登録されていない

プッシュ通知を表示するには、BrazeFirebaseMessagingService が AndroidManifest.xml に適切に登録されている必要があります。

<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 がメッセージを受信するために必要なポートがファイアウォールによってブロックされている可能性があります。ポート 522852295230 が開いていることを確認します。また、FCM は IP を指定しないため、Google の 15169 の ASN に記載された IP ブロックに含まれるすべての IP アドレスへの発信接続をファイアウォールが受け入れることも許可する必要があります。

カスタム通知ファクトリーが null を返す

[カスタム通知ファクトリー] を実装している場合は、null を返していないことを確認します。null が返されると、通知が表示されなくなります。

「プッシュ登録済み」ユーザーがメッセージ送信後に有効でなくなる

この問題が発生する理由はいくつか考えられます。

アプリケーションがアンインストールされた

ユーザーがアプリケーションをアンインストールしました。これにより、FCM プッシュトークンが無効になります。

無効な Firebase Cloud Messaging サーバーキー

Braze ダッシュボードで提供された Firebase Cloud Messaging サーバーキーが無効です。提供された送信者 ID は、アプリの braze.xml ファイルで参照されている送信者 ID と一致する必要があります。サーバーキーと送信者 ID は、Firebase コンソールの次の場所にあります。

Firebase プラットフォームの [設定]、[クラウドメッセージング] にサーバー ID とサーバーキーが表示されます。

プッシュクリックが記録されない

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 を更新して以下を含めます。

<bool name="com_braze_push_deep_link_back_stack_activity_enabled">false</bool>

Braze/APNsのワークフローについて

Apple プッシュ通知サービス(APNs)は、Appleのプラットフォームで実行されているアプリケーションにプッシュ通知を送信するためのインフラです。ユーザーのデバイスに対してプッシュ通知を有効にする方法と、Brazeがユーザーにプッシュ通知を送信する方法の簡略化された構造を以下に示します。

  1. プッシュ証明書とプロビジョニングプロファイルを構成します
  2. デバイスがAPNsに登録し、Brazeにプッシュトークンを提供します
  3. Brazeプッシュキャンペーンを開始します
  4. Brazeが無効なトークンを削除します

ステップ1:プッシュ証明書とプロビジョニングプロファイルの構成

アプリの開発では、プッシュ通知を有効にするためにSSL証明書を作成する必要があります。この証明書はアプリのビルドに使用されるプロビジョニングプロファイルに含まれ、Brazeダッシュボードにもアップロードする必要があります。この証明書により、Brazeはあなたに代わってプッシュ通知を送信することが許可されていることをAPNsに伝えることができます。

プロビジョニングプロファイルと証明書には、開発と配布の2つのタイプがあります。混乱を避けるために、配布プロファイルと証明書のみを使用することをお勧めします。開発と配布で異なるプロファイルと証明書を使用する場合は、ダッシュボードにアップロードした証明書が現在使用しているプロビジョニングプロファイルと一致していることを確認してください。

ステップ2:デバイスがAPNsに登録し、Brazeにプッシュトークンを提供します

ユーザーがアプリを開くと、プッシュ通知を受け入れるように求められます。このプロンプトを受け入れると、APNsはその特定のデバイスのプッシュトークンを生成します。Swift SDKは、デフォルトの自動フラッシュポリシーを使用して、アプリのプッシュトークンを即時かつ非同期に送信します。ユーザーにプッシュトークンが関連付けられると、ダッシュボードのエンゲージメントタブのユーザープロファイルに「プッシュ登録済み」と表示され、Braze Campaignsからプッシュ通知を受け取る資格が得られます。

プッシュトークン生成に関する考慮事項

  • ユーザーが別のデバイスにアプリをインストールした場合、別のトークンが作成され、同じ方法で取得されます。
  • ユーザーがアプリを再インストールすると、新しいトークンが生成され、Brazeに渡されます。ただし、元のトークンはAPNsとBrazeによって有効なものとして記録される可能性があります。
  • ユーザーがアプリをアンインストールしても、Brazeは即座に通知を受け取らず、トークンはAPNsによって無効化されるまで有効なまま表示されます。
  • いずれAPNsは古いトークンを廃止します。Brazeはこれについてコントロールも可視性も持っていません。

ステップ3:Brazeプッシュキャンペーンの開始

プッシュキャンペーンが開始されると、Brazeはメッセージの配信リクエストをAPNsに行います。具体的には、ユーザーの最新のデバイスに送信が選択されている場合を除き、現在の有効なプッシュトークンごとにリクエストがAPNsに渡されます。BrazeがAPNsから成功応答を受信した後、ユーザープロファイルに配信成功を記録します。ただし、以下の理由により、ユーザーが実際のメッセージを受信していない可能性があります。

  • デバイスの電源が切れている。
  • デバイスがインターネット(Wi-Fiまたは携帯電話回線)に接続されていない。
  • ユーザーが最近アプリをアンインストールした。

Brazeは、ダッシュボードにアップロードされたSSLプッシュ証明書を使用して認証を行い、提供されたプッシュトークンへのプッシュ通知の送信が許可されていることを確認します。デバイスがオンラインの場合、キャンペーンが送信された後すぐに通知が受信されます。なお、Brazeは通知のデフォルトのAPNs有効期限を30日に設定しています。

ステップ4:無効なトークンの削除

APNsが、メッセージを送信しようとしたプッシュトークンのいずれかが無効であることを通知した場合、それらのトークンは関連付けられたユーザープロファイルから削除されます。

プッシュのエラーログの使用

メッセージアクティビティログを使用すると、Campaignsや送信に関連するメッセージ(特にエラーメッセージ)を確認できます。これにはプッシュ通知エラーも含まれます。このエラーログは、Campaignsが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージをクリックすると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。

エラーが発生した時間、アプリ名、チャネル、エラータイプ、およびエラーメッセージを表示するプッシュエラーログ。

ここでよく見かけるエラーとしては、「プッシュトークンへの未登録送信を受信」など、ユーザー固有の通知があります。

さらに、Brazeはエンゲージメントタブのユーザープロファイルにプッシュ通知の変更ログも提供します。この変更ログは、トークンの無効化、プッシュ登録エラー、トークンの新規ユーザーへの移動などのプッシュ登録動作に関するインサイトを提供します。

メッセージアクティビティログのエラー

プッシュトークンへの未登録送信を受信

  • メソッドAppDelegate.braze?.notifications.register(deviceToken:)からBrazeに送信されているプッシュトークンが有効であることを確認してください。メッセージアクティビティログでプッシュトークンを確認できます。6e407a9be8d07f0cdeb9e724733a89445f57a89ec890d63867c482a483506fa6のような、文字と数字が混在する長い文字列になります。プッシュトークンが異なるように見える場合は、Brazeにプッシュトークンを送信するためのコードを確認してください。
  • プッシュプロビジョニングプロファイルがテスト対象の環境と一致することを確認します。ユニバーサル証明書は、開発または本番のAPNs環境のいずれかに送信するようにBrazeダッシュボードで構成できます。本番アプリ用の開発証明書または開発アプリ用の本番証明書は動作しません。
  • Brazeにアップロードしたプッシュトークンが、プッシュトークンの送信元のアプリのビルドに使用したプロビジョニングプロファイルと一致することを確認します。

デバイストークンがトピック用ではない

APNsは、プッシュトークンが認証情報に構成されたトピック(バンドルID)と一致しない場合にDeviceTokenNotForTopic(HTTPステータス400)を返します。Brazeはメッセージアクティビティログまたはプッシュ配信ログにこれをDeviceTokenNotForTopicとして表示する場合があります。

不一致を解決するには:

  1. アプリのバンドルIDがBrazeのアプリバンドルID設定 > アプリ設定 > プッシュ通知の設定)と一致することを確認します。
  2. アプリのビルドに使用したプロビジョニングプロファイルに、そのバンドルIDのプッシュ機能が含まれていることを確認します。
  3. Brazeにアップロードしたプッシュ認証情報がアプリの環境(開発環境と本番環境)と一致することを確認します。
  4. .p8キーの場合、BrazeのチームIDキーIDがApple Developerアカウントと一致することを確認します。
  5. 認証情報がローテーションまたは失効された場合は、有効な.p8キーまたは.p12証明書を再アップロードします。

可能な場合は.p8認証キーを使用することをお勧めします。認証情報のタイプとダッシュボードのステータスインジケーターについては、.p8認証キーへの移行を参照してください。

プッシュトークンへのBadDeviceToken送信

BadDeviceTokenはAPNsのエラーコードであり、Brazeから発信されたものではありません。この応答が返される理由としては、以下のようなさまざまなものが考えられます。

  • アプリが、ダッシュボードにアップロードされた認証情報に対して無効なプッシュトークンを受け取った。
  • このワークスペースではプッシュが無効になっていた。
  • ユーザーがプッシュをオプトアウトした。
  • アプリがアンインストールされた。
  • Appleがプッシュトークンを更新したため、古いトークンが無効になった。
  • アプリは本番環境用にビルドされているが、Brazeにアップロードされたプッシュ認証情報は開発環境用に設定されている(またはその逆)。

プッシュ登録に関する問題

プッシュ登録プロンプトが表示されない

アプリケーションでプッシュ通知の登録を求めるプロンプトが表示されない場合は、プッシュ登録の統合に問題がある可能性があります。ドキュメントに従い、プッシュ登録が正しく統合されていることを確認してください。コードにブレークポイントを設定して、プッシュ登録コードが実行されていることを確認することもできます。

ダッシュボードに「プッシュ登録済み」ユーザーが表示されない(メッセージ送信前)

アプリがプッシュ通知を許可するように正しく構成されていることを確認してください。チェックすべき一般的な障害点は以下のとおりです。

  • アプリがプッシュ通知を許可するように求めるプロンプトを表示していることを確認します。通常、このプロンプトはアプリを初めて起動したときに表示されますが、他の場所に表示されるようにプログラムすることもできます。表示されるべき場所に表示されない場合は、アプリのプッシュ機能の基本構成に問題がある可能性があります。
    • プッシュ統合の手順が正常に完了したことを確認します。
    • アプリのビルドに使用されたプロビジョニングプロファイルにプッシュの権限が含まれていることを確認します。Apple Developerアカウントから利用可能なプロビジョニングプロファイルをすべてプルダウンしていることを確認してください。これを確認するには、以下の手順を実行します。
      1. Xcodeで、Preferences > Accountsに移動します(またはキーボードショートカットCommand+,を使用します)。
      2. 開発者アカウントに使用するApple IDを選択し、View Detailsをクリックします。
      3. 次のページで、 Refreshをクリックし、使用可能なすべてのプロビジョニングプロファイルをプルしていることを確認します。
  • アプリでプッシュ機能が適切に有効化されていることを確認します。
  • プッシュプロビジョニングプロファイルがテスト環境と一致することを確認します。ユニバーサル証明書は、開発または本番のAPNs環境のいずれかに送信するようにBrazeダッシュボードで構成できます。本番アプリ用の開発証明書または開発アプリ用の本番証明書は動作しません。
  • コードにブレークポイントを設定して、registerPushTokenメソッドを呼び出していることを確認します。
  • デバイスを使ってテストし(プッシュはシミュレーターでは機能しません)、ネットワーク接続が良好であることを確認します。

プッシュ通知は送信されたがユーザーのデバイスに表示されない

「プッシュ登録済み」ユーザーがメッセージ送信後に有効でなくなる

これは、ユーザーが無効なプッシュトークンを持っていたことを示している可能性があります。これにはいくつかの理由が考えられます。

ダッシュボードとアプリ証明書の不一致

ダッシュボードでアップロードしたプッシュ証明書が、アプリのビルドに使用したプロビジョニングプロファイルのものと異なる場合、APNsはトークンを拒否します。別のテスト通知を試みる前に、正しい証明書をアップロードし、アプリで別のセッションを完了していることを確認してください。

アプリケーションがアンインストールされた

ユーザーがアプリケーションをアンインストールした場合、プッシュトークンは無効となり、次回の送信時に削除されます。

プロビジョニングプロファイルの再生成

最後の手段として、最初からやり直してまったく新しいプロビジョニングプロファイルを作成すると、複数の環境、プロファイル、およびアプリを同時に操作することによって発生する構成エラーを解消できます。プッシュ通知の設定には多くの「動く部分」があるため、最初からやり直した方がよい場合もあります。また、トラブルシューティングを続ける必要がある場合は、問題を切り分けるのにも役立ちます。

「プッシュ登録済み」ユーザーにメッセージが配信されない

アプリがフォアグラウンドにある

UserNotificationsフレームワークを介してプッシュを統合していないiOSバージョンでは、プッシュメッセージの受信時にアプリがフォアグラウンドにある場合、そのメッセージは表示されません。テストメッセージを送信する前に、テストデバイスでアプリをバックグラウンドにする必要があります。

テスト通知のスケジュールが正しくない

テストメッセージに設定したスケジュールを確認します。ローカルタイムゾーン配信またはインテリジェントタイミングに設定されている場合、メッセージがまだ受信されていない(または受信時にアプリがフォアグラウンドにあった)だけかもしれません。

テスト対象のアプリに対してユーザーが「プッシュ登録」されていない

テストメッセージを送信しようとしている相手のユーザープロファイルを確認します。エンゲージメントタブの下に「プッシュ可能なアプリ」のリストがあるはずです。テストメッセージを送信しようとしているアプリがこのリストにあることを確認します。ユーザーがワークスペース内の任意のアプリのプッシュトークンを持っている場合は「プッシュ登録済み」と表示されるため、誤検知の可能性があります。

以下は、プッシュ登録に問題があるか、プッシュ後にユーザーのトークンがAPNsによって無効としてBrazeに返されたことを示しています。

ユーザーの連絡先設定を表示するユーザープロファイル。プッシュの下に「アプリなし」が表示されています。

プッシュクリックが記録されない

  • プッシュ統合のステップに従っていることを確認します。
  • Brazeでは、フォアグラウンドでサイレント受信したプッシュ通知(UserNotificationsフレームワーク以前のデフォルトのフォアグラウンドプッシュ動作)は処理されません。つまり、リンクは開かれず、プッシュクリックも記録されません。アプリケーションがUserNotificationsフレームワークをまだ統合していない場合、アプリケーション状態がUIApplicationStateActiveのときにBrazeはプッシュ通知を処理しません。アプリでプッシュ処理メソッドの呼び出しが遅延しないようにしてください。そうしなければ、Swift SDKはプッシュ通知をサイレントフォアグラウンドプッシュイベントとして扱い、それらを処理しない場合があります。

ユニバーサルリンク、カスタムスキーム、メール、Branchのようなサードパーティプロバイダーを含む、全チャネルにわたる包括的なトラブルシューティングについては、ディープリンクのトラブルシューティングを参照してください。

プッシュ通知のリンクは、Webビューで開くにはATS準拠である必要があります。WebリンクがHTTPSを使用していることを確認してください。詳細については、ATSコンプライアンスを参照してください。

ディープリンクを扱うコードのほとんどはプッシュ通知の開封も扱います。まず、プッシュ通知の開封がログに記録されていることを確認します。記録されていない場合は、その問題を修正してください(修正するとリンク処理も直ることが多いです)。

開封が記録されている場合は、ディープリンク全般の問題なのか、ディープリンクのプッシュクリック処理の問題なのかを確認してください。そのためには、アプリ内メッセージクリックからのディープリンクが機能するかテストします。

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 initializes 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 Notification and displayed.

ステップ 1:Google Cloud APIキーを構成する

アプリの開発では、Firebase 送信者 ID を Braze Android SDK に提供する必要があります。また、サーバーアプリケーションの API キーを Braze ダッシュボードに提供する必要があります。Braze はこの API キーを使用してデバイスにメッセージを送信します。Google Developer のコンソールで FCM サービスが有効になっていることも確認する必要があります。

ステップ 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 つのタイミングでのみ起こります。

  1. FCM への登録中
  2. FCM で生成されたプッシュトークンを Braze に渡すとき

ブレークポイントを設定するか、ログを記録して、FCM で生成されたプッシュトークンが Braze に送信されていることを確認してください。トークンが正しく生成されない場合、またはまったく生成されない場合は、FCM ドキュメントを参照することをお勧めします。

Google Play 開発者サービスが存在しない

FCM プッシュが正しく機能するためには、Google Play 開発者サービスがデバイス上に存在する必要があります。Google Play 開発者サービスがデバイス上にない場合、プッシュ登録は行われません。

注:Google API がインストールされていない Android エミュレーターには、Google Play 開発者サービスはインストールされません。

デバイスがインターネットに接続されていない

デバイスのインターネット接続が良好で、プロキシ経由でネットワークトラフィックを送信していないことを確認してください。

プッシュ通知をタップしてもアプリが開かない

com_braze_handle_push_deep_links_automaticallytrue または false に設定されているかどうか確認します。プッシュ通知がタップされたときに Braze がアプリとディープリンクを自動的に開くようにするには、braze.xml ファイルで com_braze_handle_push_deep_links_automaticallytrue に設定します。

com_braze_handle_push_deep_links_automatically がデフォルトの false に設定されている場合は、Braze プッシュコールバックを使用して、プッシュの受信および開封インテントをリッスンし、処理する必要があります

プッシュ通知がバウンスされる

プッシュ通知が配信されない場合は、開発者コンソールを見て、通知がバウンスされていないことを確認してください。以下は、開発者コンソールに記録される可能性のある一般的なエラーの説明です。

エラー:MismatchSenderID

MismatchSenderID は認証が失敗したことを示します。Firebase 送信者 ID と FCM API キーが正しいことを確認してください。

エラー:InvalidRegistration

InvalidRegistration は、不正な形式のプッシュトークンが原因で発生する可能性があります。

  1. [Firebase Cloud Messaging] からの有効なプッシュトークンを Braze に渡すようにしてください。

エラー:NotRegistered

  1. NotRegistered は通常、アプリがデバイスから削除されたときに発生します。Braze はアプリがデバイスからアンインストールされたことを通知するために、内部で NotRegistered を使用します。

  2. NotRegistered は、複数の登録が行われ、2 番目の登録によって最初のトークンが無効になった場合にも発生する可能性があります。

プッシュ通知は送信されるが、ユーザーのデバイスに表示されない

この問題が発生する理由はいくつか考えられます。

アプリケーションが強制終了された

システム設定からアプリケーションを強制終了すると、プッシュ通知は送信されません。アプリを再度起動すると、デバイスがプッシュ通知を受信できるようになります。

BrazeFirebaseMessagingService が登録されていない

プッシュ通知を表示するには、BrazeFirebaseMessagingService が AndroidManifest.xml に適切に登録されている必要があります。

<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 がメッセージを受信するために必要なポートがファイアウォールによってブロックされている可能性があります。ポート 522852295230 が開いていることを確認します。また、FCM は IP を指定しないため、Google の 15169 の ASN に記載された IP ブロックに含まれるすべての IP アドレスへの発信接続をファイアウォールが受け入れることも許可する必要があります。

カスタム通知ファクトリーが null を返す

[カスタム通知ファクトリー] を実装している場合は、null を返していないことを確認します。null が返されると、通知が表示されなくなります。

「プッシュ登録済み」ユーザーがメッセージ送信後に有効でなくなる

この問題が発生する理由はいくつか考えられます。

アプリケーションがアンインストールされた

ユーザーがアプリケーションをアンインストールしました。これにより、FCM プッシュトークンが無効になります。

無効な Firebase Cloud Messaging サーバーキー

Braze ダッシュボードで提供された Firebase Cloud Messaging サーバーキーが無効です。提供された送信者 ID は、アプリの braze.xml ファイルで参照されている送信者 ID と一致する必要があります。サーバーキーと送信者 ID は、Firebase コンソールの次の場所にあります。

Firebase プラットフォームの [設定]、[クラウドメッセージング] にサーバー ID とサーバーキーが表示されます。

プッシュクリックが記録されない

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 を更新して以下を含めます。

<bool name="com_braze_push_deep_link_back_stack_activity_enabled">false</bool>

トラブルシューティング

プッシュはタスクスイッチャーからアプリが閉じられた後に表示されません

タスク切替画面からアプリを閉じた後、プッシュ通知が表示されなくなった場合、アプリはデバッグモードになっている可能性が高い。.NET MAUIはデバッグモード時に、アプリのプロセスが終了した後にプッシュ通知を受信できないようにするスキャフォールディングを追加する。アプリをリリースモードで実行すると、タスクスイッチャーからアプリを閉じた後でもプッシュ通知が表示されるはずです。

カスタム通知ファクトリが正しく設定されていません

カスタム通知ファクトリ (およびすべてのデリゲート) は、C# と Javaの境界を越えて適切に機能するために Java.Lang.Object を拡張する必要があります。詳細については、Javaインターフェイスの実装に関するXamarinを参照してください。

プッシュ通知の改行

Liquidタグを使用してプッシュ通知を作成する場合、Liquidタグに隣接する改行はメッセージ送信前に自動的に削除されます。プッシュ通知コンポーザーでは、編集中にメッセージが読みやすいようにこれらの改行が再追加されます。メッセージを保存する際にLiquidタグの前後に改行が表示される場合、これは想定どおりの動作です。

New Stuff!