コンテンツにスキップ

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

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

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

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

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

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

標準的な調査パス

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

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

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

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

トラブルシューティング

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

  • Webプッシュ通知には、サイトがHTTPSであることが必要です。
  • すべてのブラウザーがプッシュメッセージを受信できるわけではありません。ブラウザーでbraze.isPushSupported()がtrueを返すことを確認してください。
  • Firefoxなどの一部のブラウザーでは、プッシュ通知に画像が表示されません。ブラウザーのサポートの詳細については、Notification imageに関する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キーを設定する

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

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

一般的なインテグレーションでは、Braze Android SDKがFCM機能へのデバイス登録を処理します。これは通常、アプリを初めて開いた直後に行われます。登録後、BrazeにはFCM Registration IDが提供され、これを使用してそのデバイスに特定のメッセージを送信します。そのユーザーのRegistration IDが保存され、以前にいずれのアプリのプッシュトークンも持っていなかった場合、そのユーザーは「プッシュ登録済み」になります。

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

プッシュキャンペーンが開始されると、BrazeはFCMにリクエストを送信してメッセージを配信します。BrazeはダッシュボードでコピーされたAPIキーを使用して認証を行い、提供されたプッシュトークンにプッシュ通知を送信できることを確認します。

ステップ4:無効なトークンを削除する

メッセージの送信先としたプッシュトークンのいずれかが無効であるとFCMから通知された場合、関連するユーザープロファイルからそれらのトークンを削除します。他のプッシュトークンを持っていないユーザーは、セグメントページで「プッシュ登録済み」として表示されなくなります。

FCMの詳細については、Cloud messagingを参照してください。

プッシュエラーを確認する

キャンペーンやキャンバスのプッシュ通知エラーは、メッセージングオブザーバビリティに表示されます。

トラブルシューティング

プッシュが送信されない

以下の状況により、プッシュメッセージが送信されないことがあります。

  • 認証情報が間違ったGoogle Cloud PlatformプロジェクトID(間違ったsender ID)に存在する。
  • 認証情報のパーミッションスコープが間違っている。
  • 間違った認証情報を間違ったBrazeワークスペースにアップロードした(間違ったsender ID)。

プッシュメッセージの送信を妨げるその他の問題については、ユーザーガイド:プッシュ通知のトラブルシューティングを参照してください。

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

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

sender IDが正しくない

braze.xmlファイルに正しいFCM sender IDが含まれていることを確認してください。sender IDが正しくないと、MismatchSenderIDエラーが発生します。メッセージングオブザーバビリティで確認してください。

Brazeへの登録が行われない

FCM登録はBrazeの外部で処理されるため、登録の失敗は2箇所でのみ発生する可能性があります。

  1. FCMへの登録時
  2. FCMが生成したプッシュトークンをBrazeに渡す時

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

Google Play Servicesがインストールされていない

FCMプッシュが動作するには、デバイスにGoogle Play Servicesがインストールされている必要があります。デバイスにGoogle Play Servicesがインストールされていない場合、プッシュ登録は行われません。

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

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

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

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 sender IDとFCM APIキーが正しいことを確認してください。

エラー:InvalidRegistration

InvalidRegistrationは、不正なプッシュトークンによって発生する可能性があります。

  1. Firebase Cloud Messagingから有効なプッシュトークンをBrazeに渡していることを確認してください。

エラー:NotRegistered

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

カスタム通知ファクトリーがnullを返している

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

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

これが発生する理由はいくつかあります。

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

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

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

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

Firebaseプラットフォームの「設定」から「Cloud Messaging」に移動すると、サーバー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ファイルを以下のように更新します。

<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から通知された場合、それらのトークンは関連付けられていたユーザープロファイルから削除されます。

プッシュエラーの確認

メッセージングオブザーバビリティでは、キャンペーンやキャンバスからのプッシュが送信されなかった理由(APNsやFCMから返されたエラーを含む)を確認できます。

よく見られるエラーには、「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)を返します。メッセージングオブザーバビリティでキャンペーンまたはキャンバスのエラーを確認してください。

不一致を解決するには:

  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によって無効として返されたことを示しています。

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

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

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

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

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

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

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

Push Storyの画像タップが反応しない

Push Storyの画像をタップしても何も起こらない場合は、Notification Content ExtensionのInfo.plistを開き、UNNotificationExtensionUserInteractionEnabledがYESに設定されていることを確認してください。Swift SDKのBrazePushStoryモジュールは、拡張機能がタップを受信するためにこのキーが必要です。Push Storiesを参照してください。

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キーを設定する

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

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

一般的なインテグレーションでは、Braze Android SDKがFCM機能へのデバイス登録を処理します。これは通常、アプリを初めて開いた直後に行われます。登録後、BrazeにはFCM Registration IDが提供され、これを使用してそのデバイスに特定のメッセージを送信します。そのユーザーのRegistration IDが保存され、以前にいずれのアプリのプッシュトークンも持っていなかった場合、そのユーザーは「プッシュ登録済み」になります。

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

プッシュキャンペーンが開始されると、BrazeはFCMにリクエストを送信してメッセージを配信します。BrazeはダッシュボードでコピーされたAPIキーを使用して認証を行い、提供されたプッシュトークンにプッシュ通知を送信できることを確認します。

ステップ4:無効なトークンを削除する

メッセージの送信先としたプッシュトークンのいずれかが無効であるとFCMから通知された場合、関連するユーザープロファイルからそれらのトークンを削除します。他のプッシュトークンを持っていないユーザーは、セグメントページで「プッシュ登録済み」として表示されなくなります。

FCMの詳細については、Cloud messagingを参照してください。

プッシュエラーを確認する

キャンペーンやキャンバスのプッシュ通知エラーは、メッセージングオブザーバビリティに表示されます。

トラブルシューティング

プッシュが送信されない

以下の状況により、プッシュメッセージが送信されないことがあります。

  • 認証情報が間違ったGoogle Cloud PlatformプロジェクトID(間違ったsender ID)に存在する。
  • 認証情報のパーミッションスコープが間違っている。
  • 間違った認証情報を間違ったBrazeワークスペースにアップロードした(間違ったsender ID)。

プッシュメッセージの送信を妨げるその他の問題については、ユーザーガイド:プッシュ通知のトラブルシューティングを参照してください。

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

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

sender IDが正しくない

braze.xmlファイルに正しいFCM sender IDが含まれていることを確認してください。sender IDが正しくないと、MismatchSenderIDエラーが発生します。メッセージングオブザーバビリティで確認してください。

Brazeへの登録が行われない

FCM登録はBrazeの外部で処理されるため、登録の失敗は2箇所でのみ発生する可能性があります。

  1. FCMへの登録時
  2. FCMが生成したプッシュトークンをBrazeに渡す時

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

Google Play Servicesがインストールされていない

FCMプッシュが動作するには、デバイスにGoogle Play Servicesがインストールされている必要があります。デバイスにGoogle Play Servicesがインストールされていない場合、プッシュ登録は行われません。

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

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

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

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 sender IDとFCM APIキーが正しいことを確認してください。

エラー:InvalidRegistration

InvalidRegistrationは、不正なプッシュトークンによって発生する可能性があります。

  1. Firebase Cloud Messagingから有効なプッシュトークンをBrazeに渡していることを確認してください。

エラー:NotRegistered

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

カスタム通知ファクトリーがnullを返している

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

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

これが発生する理由はいくつかあります。

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

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

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

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

Firebaseプラットフォームの「設定」から「Cloud Messaging」に移動すると、サーバー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ファイルを以下のように更新します。

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

これを修正するには、braze.xmlでcom_braze_handle_push_deep_links_automaticallyをtrueに設定します。

<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!