Skip to content

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

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開発者サービスがデバイス上にない場合、プッシュ登録は行われません。

注: 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に適切に登録されている必要があります。

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はプッシュクリックを自動的に記録するため、このシナリオは比較的まれです。

プッシュクリックがログに記録されない場合は、プッシュクリックデータがまだサーバーにフラッシュされていない可能性があります。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 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は、デフォルトの自動フラッシュポリシーを使用するアプリに対して、プッシュトークンを即座に非同期で送信します。ユーザーに関連付けられたプッシュトークンを取得すると、そのユーザーはダッシュボードのユーザープロファイルのエンゲージメントタブに「Push Registered」として表示され、Brazeキャンペーンからプッシュ通知を受信する資格を得ます。

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

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

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

プッシュキャンペーンが起動されると、Brazeはメッセージを配信するためにAPNsにリクエストを送信します。具体的には、ユーザーの最新のデバイスに送信が選択されていない限り、現在有効な各プッシュトークンに対してリクエストが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開発者アカウントから利用可能なすべてのプロビジョニングプロファイルを取得していることを確認してください。確認するには、以下の手順を実行してください。
      1. Xcodeで、Preferences > Accountsに移動します(またはキーボードショートカットCommand+,を使用します)。
      2. 開発者アカウントに使用しているApple IDを選択し、View Detailsをクリックします。
      3. 次のページで、 Refreshをクリックし、利用可能なすべてのプロビジョニングプロファイルを取得していることを確認します。
  • アプリでプッシュ機能が正しく有効化されていることを確認してください。
  • プッシュプロビジョニングプロファイルがテスト中の環境と一致していることを確認してください。ユニバーサル証明書は、Brazeダッシュボードで開発用または本番用のAPNs環境のいずれかに送信するように設定できます。本番アプリに開発用証明書を使用したり、開発アプリに本番用証明書を使用したりしても機能しません。
  • コード内にブレークポイントを設定して、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は、プッシュ通知エラーをメッセージアクティビティログに出力します。このエラーログは、キャンペーンが期待どおりに機能していない理由を特定するのに非常に役立つさまざまな警告を提供します。エラーメッセージをクリックすると、特定のインシデントのトラブルシューティングに役立つ関連ドキュメントにリダイレクトされます。

プッシュ通知エラーエントリが表示された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に適切に登録されている必要があります。

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はプッシュクリックを自動的に記録するため、このシナリオは比較的まれです。

プッシュクリックがログに記録されない場合は、プッシュクリックデータがまだサーバーにフラッシュされていない可能性があります。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>

トラブルシューティング

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

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

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

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

プッシュ通知の改行

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

New Stuff!