Kotlin Multiplatform SDKでのペイウォール取得の最適化

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

以下のルールは、Adapty.activate() および Adapty.identify() がすでに解決済みであることを前提としています。詳細は Kotlin Multiplatform SDK の呼び出し順序 を参照してください。

以下のアドバイスでは v3 のメソッド名を使用しています。SDK v4 では getPaywallgetFlow に名称変更されていますが(移行ガイド を参照)、すべてのルールはそのまま適用されます。

ルールと注意点

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

ペイウォールとプロダクトの取得fetchPolicyloadTimeoutパラメーターのリファレンスを確認し、プレースメントで適切なプレースメントの選び方を参照してください。

接続が不安定な環境向けの調整

接続が継続的に不安定な市場(農村地帯、交通機関、ルーティングの影響を受ける地域)向け:

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