Kotlin Multiplatform SDKでのペイウォール取得の最適化
Kotlin Multiplatform での信頼性の高いペイウォール取得には、3つの要件があります: 高速なレンダリング、オーディエンスターゲティングに基づくペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックです。以下のルールでは、これを実現するためのタイミング、キャッシュ、フォールバックパターンについて説明します。
以下のルールは、Adapty.activate() および Adapty.identify() がすでに解決済みであることを前提としています。詳細は Kotlin Multiplatform SDK の呼び出し順序 を参照してください。
以下のアドバイスでは v3 のメソッド名を使用しています。SDK v4 では getPaywall が getFlow に名称変更されていますが(移行ガイド を参照)、すべてのルールはそのまま適用されます。
ルールと注意点
| こうする | こうしない | 理由 |
|---|---|---|
| 表示しようとしているプレースメントだけ取得する。 | 起動時にすべてのプレースメントを一括プリフェッチする。 | 一括プリフェッチはメインスレッドをブロックし、バースト中にブラックスクリーンが発生する。 |
アトリビューションが解決する時間を確保してから getPaywall を取得する(例:activate の 1〜2 秒後、または setOnProfileUpdatedListener が発火した後)。 | アプリ起動時に getPaywall を呼び出す。 | アトリビューションがまだ反映されていないため、ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントや ASA のパーソナライズが暗黙的にスキップされる。 |
loadTimeout を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。 | getPaywall を無期限に待ち続ける。 | タイムアウトがないと、通信状況の悪いユーザーはネットワークが解決するまで白紙の画面を見続けるか、アプリを閉じてしまう。 |
ペイウォールとプロダクトの取得でfetchPolicyとloadTimeoutパラメーターのリファレンスを確認し、プレースメントで適切なプレースメントの選び方を参照してください。
接続が不安定な環境向けの調整
接続が継続的に不安定な市場(農村地帯、交通機関、ルーティングの影響を受ける地域)向け:
- 最初の取得を除くすべての取得で
fetchPolicy = AdaptyPaywallFetchPolicy.ReturnCacheDataElseLoadを設定する。 - Adapty ダッシュボードのすべてのプレースメントにフォールバックペイウォールを設定する。
loadTimeoutを3〜5秒に設定し、タイムアウトが発生した場合はフォールバックを受け入れる。- ペイウォールの表示を
Adapty.getProfile()に依存させない。getPaywallを独立して呼び出し、プロファイルの遅延がUIをブロックしないようにする。