Skip to content

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

このページでは、デバイス上のプッシュ通知の配信と表示の問題を診断します。ダッシュボード側の配信チェック(購読ステータス、セグメント、キャップ)については、プッシュ通知のトラブルシューティングを参照してください。

デバッグを開始する前に、自分自身をテストユーザーとして追加し、テストメッセージの送信を確認してください。

まずはここから:症状を確認する

以下の表から該当する症状を見つけて、そのセクションのステップに従ってください。どのセクションが該当するかわからない場合は、標準的な調査パスを使用してください。

症状 参照先
特定のプラットフォームでプッシュ通知を受信しない プラットフォーム固有のトラブルシューティングでSDKタブを選択してください
保存時にLiquidタグ周辺の改行がおかしくなる プッシュ通知の改行
ダッシュボードの配信チェック(購読、セグメント、上限) プッシュ通知のトラブルシューティング
プッシュ通知からのディープリンクが正しく開かない ディープリンクのトラブルシューティング
一般的なプッシュエラーコード 一般的なプッシュエラーメッセージ

標準的な調査パス

すべてのプッシュ通知のインシデントに対して、このワークフローを使用してください。ステップ1から始めてください。

  1. デバイスに有効なプッシュトークンがあり、デバイス設定でプッシュ権限が付与されていることを確認します。
  2. ダッシュボードで、テストユーザーがキャンペーンまたはキャンバスのセグメントに一致しており、コントロールグループに含まれていないことを確認します。
  3. テストデバイスにテストプッシュを送信します。
  4. 詳細ログを有効にし、問題を再現して、SDKタブでプラットフォーム固有のガイダンスを確認します。
  5. 問題が解決しない場合は、詳細ログ、プラットフォーム、SDKバージョン、キャンペーンまたはキャンバスIDを添えてBrazeサポートにお問い合わせください。

プラットフォーム固有のトラブルシューティング

SDKタブを選択して、プラットフォーム固有の設定と表示の確認を行ってください。

トラブルシューティング

プッシュ通知の設定後に問題が発生した場合は、以下を確認してください。

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

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は、プッシュ通知エラーをメッセージアクティビティログに出力します。このエラーログは、キャンペーンが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージを選択すると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。

プッシュ通知エラーエントリが表示された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開発者サービスがデバイス上にない場合、プッシュ登録は行われません。

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

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

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

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は、複数の登録が行われ、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がメッセージを受信するために必要なポートがファイアウォールによってブロックされている可能性があります。ポート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 Android SDKはフラッシュを調整する場合があります。

カスタムプッシュハンドラーを実装している場合は、ネイティブプッシュ分析を適切に保持していることを確認してください。

プッシュクリックの記録はネットワーク操作であり、ネットワークの制限に依存します。そのため、Braze Android SDKはネットワーク障害に対応し、失敗したリクエストを再試行しますが、一部のイベント損失が発生する可能性があります。

ディープリンクは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 Push Notification service(APNs)は、Appleのプラットフォーム上で動作するアプリにプッシュ通知を送信するためのインフラです。ユーザーのデバイスでプッシュ通知が有効になる仕組みと、Brazeがプッシュ通知を送信する方法の簡略化された構造を以下に示します。

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

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

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

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

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

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

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

  • ユーザーが別のデバイスにアプリをインストールした場合、Brazeは同じ方法で別のトークンを作成してキャプチャします。
  • ユーザーがアプリを再インストールした場合、SDKは新しいトークンを生成してBrazeに渡します。ただし、APNsとBrazeは元のトークンを有効として記録し続ける場合があります。
  • ユーザーがアプリをアンインストールした場合、Brazeはすぐに通知を受け取らず、APNsがトークンを無効にするまでトークンは有効として表示されます。
  • ある時点で、APNsは古いトークンを無効にします。Brazeはこれを制御したり、可視化したりすることはできません。

ステップ3:Brazeプッシュキャンペーンの起動

プッシュキャンペーンが起動されると、Brazeはメッセージを配信するためにAPNsにリクエストを送信します。具体的には、ユーザーの最新のデバイスに送信が選択されていない限り、現在有効な各プッシュトークンに対してリクエストが送信されます。BrazeがAPNsから成功レスポンスを受信すると、ユーザープロファイルに配信成功が記録されますが、以下の理由によりユーザーが実際のメッセージを受信していない場合があります。

  • デバイスの電源がオフになっている。
  • デバイスがインターネット(Wi-Fiまたはセルラー)に接続されていない。
  • 最近アプリをアンインストールした。

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

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

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

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

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

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

ここで表示される一般的なエラーには、「Received Unregistered Sending to Push Token」などのユーザー固有の通知が含まれます。

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

Brazeユーザープロファイルのエンゲージメントタブに表示されるプッシュ登録変更ログ。

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

Received unregistered sending to push token

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

Device token not for topic

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 sending to push token

BadDeviceTokenはAPNsのエラーコードであり、Brazeから発生するものではありません。このレスポンスが返される理由はいくつか考えられます。

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

プッシュ登録の問題

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

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

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

アプリがプッシュ通知を許可するように正しく設定されていることを確認してください。確認すべき一般的な障害ポイントは以下のとおりです。

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

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

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

これは、ユーザーのプッシュトークンが無効であることを示している可能性があります。これはいくつかの理由で発生する可能性があります。

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

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

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

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

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

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

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

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

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

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

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

テスト対象のアプリにユーザーが「プッシュ登録済み」でない

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

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

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

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

  • プッシュ通知の統合ステップに従っていることを確認してください。
  • 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は、プッシュ通知エラーをメッセージアクティビティログに出力します。このエラーログは、キャンペーンが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージを選択すると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。

プッシュ通知エラーエントリが表示された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開発者サービスがデバイス上にない場合、プッシュ登録は行われません。

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

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

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

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は、複数の登録が行われ、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がメッセージを受信するために必要なポートがファイアウォールによってブロックされている可能性があります。ポート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 Android SDKはフラッシュを調整する場合があります。

カスタムプッシュハンドラーを実装している場合は、ネイティブプッシュ分析を適切に保持していることを確認してください。

プッシュクリックの記録はネットワーク操作であり、ネットワークの制限に依存します。そのため、Braze Android SDKはネットワーク障害に対応し、失敗したリクエストを再試行しますが、一部のイベント損失が発生する可能性があります。

ディープリンクは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>

トラブルシューティング

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

Androidでは、プッシュ通知をタップしたときにアプリが自動的にフォアグラウンドに表示され、ディープリンクが開かれるかどうかは、ネイティブのcom_braze_handle_push_deep_links_automaticallyフラグによって制御されます。このフラグのデフォルト値はfalseです。

デフォルトのfalseの場合:

  • ネイティブSDKは引き続きBRAZE_PUSH_CLICKEDブロードキャストを送信し、Dartのpush_openedリスナーも期待どおりに起動します。
  • ネイティブSDKはstartActivity()を呼び出さないため、アプリはフォアグラウンドに表示されず、ディープリンクも自動的にたどられません。

これら2つの動作が発生している症状と一致する場合、フラグの設定が原因である可能性が高いです。 確認するには、デバイスログでBrazePushReceivercom.braze.action.BRAZE_PUSH_CLICKEDを処理しているエントリを探し、続いてFlutterログにpush_openedイベントが記録されているにもかかわらず、対応するアプリの起動がないことを確認してください。

これを修正するには、braze.xmlcom_braze_handle_push_deep_links_automaticallytrueに設定します。

1
<bool name="com_braze_handle_push_deep_links_automatically">true</bool>

詳細については、Flutterプッシュ通知ガイドのディープリンクの追加(Android)を参照してください。

その他のプッシュ配信および登録の問題

Braze Flutter SDK for AndroidはネイティブのBraze Android SDKの上に構築されているため、その他のプッシュ配信、登録、ログに関する問題(送信者IDの不一致、Google Play Servicesの欠落、BrazeFirebaseMessagingServiceが登録されていないなど)のほとんどはFlutterアプリにも該当します。詳細については、ネイティブAndroidトラブルシューティングガイドを参照してください。

トラブルシューティング

タスクスイッチャーからアプリを閉じた後にプッシュが表示されない

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

カスタム通知ファクトリーが正しく設定されない

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

プッシュ通知の改行

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

New Stuff!