Flutter SDKでのペイウォール取得を最適化する
Flutter でのペイウォール取得を信頼性の高いものにするには、3つのことを実現する必要があります:高速な表示、オーディエンスにターゲティングされたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックです。以下のルールでは、これを実現するためのタイミング、キャッシュ、フォールバックパターンについて説明します。
以下のルールは、Adapty().activate() および Adapty().identify() がすでに完了していることを前提としています。詳しくは Flutter SDK の呼び出し順序 をご覧ください。
以下のアドバイスは v3 のメソッド名を使用しています。SDK v4 では、getPaywall が getFlow に、フェッチポリシーの型が AdaptyFlowFetchPolicy にそれぞれ名称変更されていますが、すべてのルールはそのまま適用されます。
ルールと注意点
| すること | しないこと | 理由 |
|---|---|---|
| これから表示するプレースメントをフェッチする。 | 起動時にすべてのプレースメントを並列でプリフェッチする。 | 一括プリフェッチはメインスレッドをブロックし、処理が集中する間にブラックスクリーンが発生する。 |
アトリビューションが解決する時間を確保してから getPaywall をフェッチする(たとえば activate から 1〜2 秒後、または didUpdateProfileStream が発火した後)。 | runApp の前の main() で getPaywall を呼び出す。 | アトリビューションがまだ確定していないため、ペイウォールはデフォルトのオーディエンスで解決され、セグメントや ASA パーソナライゼーションが無効になる。 |
loadTimeout を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。 | getPaywall を無期限に待機する。 | タイムアウトを設定しないと、通信環境が悪いユーザーはネットワークが解決するまで空白画面を見続けるか、アプリを閉じてしまう。 |
プレースメントの選び方についてはプレースメントを、fetchPolicyおよびloadTimeoutパラメータの詳細についてはペイウォールとプロダクトの取得を参照してください。 |
接続状況が悪い環境向けのチューニング
接続状況が慢性的に悪い市場(農村部、移動中、ルーティングの問題がある地域)向けには:
- 最初の取得以外のすべての取得で
fetchPolicy: AdaptyPaywallFetchPolicy.returnCacheDataElseLoadを設定する。 - Adapty ダッシュボードですべてのプレースメントにフォールバックペイウォールを設定する。
loadTimeoutを3〜5秒に設定し、タイムアウトが発火した場合はフォールバックを受け入れる。getProfile()にペイウォールの表示を依存させない。getPaywallを独立して呼び出すことで、プロファイルの取得が遅くてもUIをブロックしないようにする。