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

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

これらのルールは、Adapty().activate()Adapty().identify() がすでに解決済みであることを前提としています。Flutter SDK のコール順序を参照してください。

ルールと注意点

こうするこうしない理由
表示しようとしているプレースメントを取得する。起動時にすべてのプレースメントを同時にプリフェッチする。一括プリフェッチはメインスレッドをブロックし、バースト中にブラックスクリーンが発生する。
アトリビューションが解決される機会を得た後(例: activate から1〜2秒後、または didUpdateProfileStream が発火した後)に getPaywall を呼び出す。runApp の前に main()getPaywall を呼び出す。アトリビューションがまだ反映されていない。ペイウォールがデフォルトのオーディエンスに対して解決され、セグメントやASAのパーソナライゼーションが暗黙的にバイパスされる。
loadTimeout を設定し、すべてのプレースメントに対してフォールバックペイウォールを構成する。getPaywall を無期限に待機する。タイムアウトがない場合、接続状況の悪いユーザーはネットワークが解決されるまで(またはアプリを閉じるまで)白紙の画面を見続ける。

fetchPolicy および loadTimeout パラメーターのリファレンスについてはペイウォールとプロダクトの取得を、適切なプレースメントの選択についてはプレースメントを参照してください。

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

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

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