iOS SDKでペイウォールのフェッチを最適化する

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

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

ルールと注意点

推奨事項避けるべき事項理由
表示しようとしているプレースメントをフェッチする。起動時にすべてのプレースメントを並列でプリフェッチする。一括プリフェッチはメインスレッドをブロックし、バースト中に画面が真っ暗になる。
アトリビューションが解決される時間を確保してから getPaywall をフェッチする(例:activate から1〜2秒後、または onProfileUpdate が発火した後)。App.init()getPaywall を呼び出す。アトリビューションがまだ取得されていない。ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントやASAパーソナライゼーションが静かにバイパスされる。
loadTimeout を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。getPaywall を無期限に待機する。タイムアウトなしでは、接続が悪いユーザーはネットワークが解決するまで空白の画面を見続けるか、アプリを閉じてしまう。

fetchPolicyloadTimeout パラメーターのリファレンスについてはペイウォールとプロダクトのフェッチを、適切なプレースメントの選択についてはプレースメントを参照してください。

接続が悪い環境向けの調整

接続が安定しない市場(農村部、移動中、ルーティングの問題が多い地域)向けには:

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