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をブロックしないようにする。