トラブルシューティング
基本チェック
あるユーザーにアプリ内メッセージが表示されない
- SDKが新しいアプリ内メッセージを要求したとき、ユーザーはセッション開始時にセグメンテーションにいたか?
- ユーザーはキャンペーンターゲティングルールに従ってアプリ内メッセージを受信する資格があったか、または再資格があったか。
- ユーザーはフリークエンシーキャップの影響を受けたのか?
- ユーザーはコントロールグループにいたのか?キャンペーンがABテスト用に設定されているか確認する。
- 期待されたメッセージの代わりに、より優先順位の高い別のアプリ内メッセージが表示されたか?
- 私のデバイスはキャンペーンで指定された正しい向きになっていたか?
- 私のメッセージは、SDK によって適用された、トリガー間のデフォルトの30秒の最小時間間隔によって抑制されたのでしょうか?
このプラットフォームで、アプリ内メッセージがすべてのユーザーに表示されなかった
- キャンペーンは、モバイルアプリまたはWebブラウザのいずれかを適切にターゲットとするように設定されているか。例として、キャンペーンがWebブラウザのみをターゲットにしている場合、Androidデバイスには送信されない。
- カスタムUIを実装し、意図したとおりに機能しているか?他のアプリ側のカスタム処理や抑制が表示を妨げていないか?
- この特定のプラットフォームとアプリのバージョンで、アプリ内メッセージが正常に表示されたことはあるか?
- トリガーはデバイスのローカルで行われたのか?REST コールを使用して SDK のアプリ内メッセージをトリガーすることはできません。
アプリ内メッセージがすべてのユーザーに表示されなかった。
- ダッシュボードやアプリとの連携で、トリガーアクションは適切に設定されたか?
- 期待されたメッセージの代わりに、より優先順位の高い別のアプリ内メッセージが表示されたか?
- 使用している SDK のバージョンは新しいですか?アプリ内メッセージの種類によってはSDKのバージョン要件がある。
- セッションは適切に統合されているか?このアプリでセッション分析は機能しているか?
これらのシナリオの詳細については、高度なトラブルシューティングのセクションを参照してください。
インプレッションとクリック分析の問題点
インプレッションとクリックが記録されない
メッセージ表示またはクリックアクションを手動で処理するようにアプリ内メッセージデリゲートを設定している場合は、アプリ内メッセージのクリック数とインプレッション数を手動で記録しなければなりません。
インプレッションが予想より低い
トリガーはセッション開始時にデバイスへの同期に時間がかかるため、ユーザーがセッション開始直後にイベントや購入を記録すると競合状態が発生する可能性があります。考えられる回避策の 1 つは、キャンペーンを変更してセッションの開始をトリガーし、目的のイベントまたは購入をセグメント化することです。なお、イベント発生後の次回セッション開始時にアプリ内メッセージが配信されることに注意してください。
高度なトラブルシューティング
ほとんどのアプリ内メッセージの問題は、配信と表示の 2 つの主要なカテゴリに分けることができます。期待したアプリ内メッセージがデバイスに表示されなかった原因をトラブルシューティングするには、アプリ内メッセージがデバイスに配信されたことを確認し、メッセージ表示のトラブルシューティングを行う。
アプリ内メッセージ配信のトラブルシューティング
SDK はセッション開始時に Braze サーバーからアプリ内メッセージを要求します。アプリ内メッセージがデバイスに配信されているかどうかを確認するには、アプリ内メッセージが SDK によってリクエストされ、Braze サーバーによって返されていることを確認する必要があります。
メッセージが要求され、返されたかどうかを確認する
- ダッシュボードで テストユーザー として自分自身を追加します。
- ユーザーを対象としたアプリ内メッセージキャンペーンを設定します。
- アプリケーションで新しいセッションが発生することを確認します。
- イベントユーザーログ を使用して、セッション開始時にデバイスがアプリ内メッセージを要求していることを確認します。テストユーザーのセッション開始イベントに関連付けられた SDK リクエストを見つけます。
- トリガーされたアプリ内メッセージをリクエストするためのアプリであれば、[レスポンスデータ] の [リクエスト済みレスポンス] フィールドに
trigger
が表示されます。 - アプリが元のアプリ内メッセージをリクエストするためのものだった場合、[レスポンスデータ]] の [リクエスト済みレスポンス] フィールドに
in_app
が表示されます。
- トリガーされたアプリ内メッセージをリクエストするためのアプリであれば、[レスポンスデータ] の [リクエスト済みレスポンス] フィールドに
- イベントユーザーログ を使用して、応答データで正しいアプリ内メッセージが返されるかどうかを確認します。
リクエストされていないメッセージのトラブルシューティング
アプリ内メッセージがリクエストされていない場合、アプリ内メッセージはセッション開始時にリフレッシュされるため、アプリがセッションを正しくトラッキングしていない可能性があります。また、アプリのセッションタイムアウトセマンティクスに基づいて、アプリが実際にセッションを開始していることを確認してください:
メッセージが返されない問題のトラブルシューティング
アプリ内メッセージが返されない場合、キャンペーンターゲティングの問題が発生している可能性があります。
- セグメントにユーザーが含まれていない。
- ユーザーの [**エンゲージメント](/docs/ja/user_guide/engagement_tools/segments/using_user_search/#engagement-tab) タブで、[セグメント**] に正しいセグメントが表示されているかどうかを確認します。
- ユーザーが以前にアプリ内メッセージを受け取ったことがあり、再度受け取る資格がなかった。
- キャンペーン作成ツールの配信ステップの キャンペーン再適格性設定 を確認し、再適格性設定がテスト設定と整合していることを確認します。
- ユーザーがキャンペーンのフリークエンシーキャップに達した。
- キャンペーン フリークエンシーキャップ設定 を確認し、テスト設定と整合していることを確認します。
- キャンペーンにコントロールグループが存在した場合、ユーザーがコントロールグループに分類された可能性があります。
- キャンペーンバリアントが [制御] に設定されている受信キャンペーンバリアントフィルターでセグメントを作成し、ユーザーがそのセグメントに分類されたかどうかを確認することで、これが発生したかどうかを確認できます。
- 統合テスト目的でキャンペーンを作成する場合は、コントロールグループの追加をオプトアウトしてください。
アプリ内メッセージ表示のトラブルシューティング
アプリ内メッセージのリクエストと受信に成功しているにもかかわらず表示されない場合、デバイス側のロジックが表示を妨げている可能性がある:
-
トリガーされたアプリ内メッセージは、トリガー間の最小時間間隔 (デフォルトは30秒) に基づいてレート制限されます。
-
画像のダウンロードに失敗すると、画像付きのアプリ内メッセージが表示されなくなります。画像のダウンロードに失敗していないか、デバイスのログを確認してください。
-
アプリ内メッセージ処理をカスタマイズするようにデリゲートを設定している場合は、デリゲートがアプリ内メッセージ表示に影響していないことを確認してください。
-
端末の向きがアプリ内メッセージで指定された向きと一致しなかった場合、アプリ内メッセージは表示されません。デバイスの向きが正しいことを確認してください。
アセット読み込みのトラブルシューティング (NSURLError
コード -1008
)
Braze とサードパーティのネットワークロギングライブラリを統合する場合、開発者はドメインコード -1008
の NSURLError
に遭遇することがよくあります。このエラーは、画像やフォントなどのアセットが取得できなかったか、キャッシュできなかったことを示しています。このようなケースを回避するには、BrazeのCDN URLを、これらのライブラリによって無視されるべきドメインのリストに登録する必要がある。
ドメイン
CDNドメインの全リストは以下の通り:
"appboy-images.com"
"braze-images.com"
"cdn.braze.eu"
"cdn.braze.com"
例
以下は、Brazeのアセットキャッシュと競合することが知られているライブラリと、その問題を回避するためのサンプルコードである。使用できないリソース・エラーを引き起こすライブラリを使用しているプロジェクトで、以下にリストアップされていない場合は、そのライブラリのドキュメントを参照して、同様の使用APIを確認してほしい。
Netfox
1
NFX.sharedInstance().ignoreURLs(["https://cdn.braze.com"])
1
[NFX.sharedInstance ignoreURLs:@[@"https://cdn.braze.com"]];
NetGuard
1
NetGuard.blackListHosts.append(contentsOf: ["cdn.braze.com"])
1
2
3
NSMutableArray<NSString *> *blackListHosts = [NetGuard.blackListHosts mutableCopy];
[blackListHosts addObject:@"cdn.braze.com"];
NetGuard.blackListHosts = blackListHosts;
XNLogger
1
2
let brazeAssetsHostFilter = XNHostFilter(host: "https://cdn.braze.com")
XNLogger.shared.addFilters([brazeAssetsHostFilter])
1
2
XNHostFilter *brazeAssetsHostFilter = [[XNHostFilter alloc] initWithHost: @"https://cdn.braze.com"];
[XNLogger.shared addFilters:@[brazeAssetsHostFilter]];