Flutter SDKでのペイウォール取得を最適化する

Flutter でのペイウォール取得を信頼性の高いものにするには、3つのことを実現する必要があります:高速な表示、オーディエンスにターゲティングされたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックです。以下のルールでは、これを実現するためのタイミング、キャッシュ、フォールバックパターンについて説明します。

以下のルールは、Adapty().activate() および Adapty().identify() がすでに完了していることを前提としています。詳しくは Flutter SDK の呼び出し順序 をご覧ください。

以下のアドバイスは v3 のメソッド名を使用しています。SDK v4 では、getPaywallgetFlow に、フェッチポリシーの型が AdaptyFlowFetchPolicy にそれぞれ名称変更されていますが、すべてのルールはそのまま適用されます。

ルールと注意点

することしないこと理由
これから表示するプレースメントをフェッチする。起動時にすべてのプレースメントを並列でプリフェッチする。一括プリフェッチはメインスレッドをブロックし、処理が集中する間にブラックスクリーンが発生する。
アトリビューションが解決する時間を確保してから getPaywall をフェッチする(たとえば activate から 1〜2 秒後、または didUpdateProfileStream が発火した後)。runApp の前の main()getPaywall を呼び出す。アトリビューションがまだ確定していないため、ペイウォールはデフォルトのオーディエンスで解決され、セグメントや ASA パーソナライゼーションが無効になる。
loadTimeout を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。getPaywall を無期限に待機する。タイムアウトを設定しないと、通信環境が悪いユーザーはネットワークが解決するまで空白画面を見続けるか、アプリを閉じてしまう。
プレースメントの選び方についてはプレースメントを、fetchPolicyおよびloadTimeoutパラメータの詳細についてはペイウォールとプロダクトの取得を参照してください。

接続状況が悪い環境向けのチューニング

接続状況が慢性的に悪い市場(農村部、移動中、ルーティングの問題がある地域)向けには:

  • 最初の取得以外のすべての取得で fetchPolicy: AdaptyPaywallFetchPolicy.returnCacheDataElseLoad を設定する。
  • Adapty ダッシュボードですべてのプレースメントにフォールバックペイウォールを設定する。
  • loadTimeout を3〜5秒に設定し、タイムアウトが発火した場合はフォールバックを受け入れる。
  • getProfile() にペイウォールの表示を依存させない。getPaywall を独立して呼び出すことで、プロファイルの取得が遅くてもUIをブロックしないようにする。