iOS SDKでペイウォールのフェッチを最適化する
iOSで信頼性の高いペイウォールフェッチを実現するには、3つの要件を満たす必要があります。高速なレンダリング、オーディエンスターゲットに合ったペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックです。以下のルールでは、それを実現するためのタイミング、キャッシュ、フォールバックのパターンを説明します。
以下のルールは、Adapty.activate() と Adapty.identify() がすでに解決済みであることを前提としています。iOS SDKのコール順序を参照してください。
ルールと注意点
| 推奨事項 | 避けるべき事項 | 理由 |
|---|---|---|
| 表示しようとしているプレースメントをフェッチする。 | 起動時にすべてのプレースメントを並列でプリフェッチする。 | 一括プリフェッチはメインスレッドをブロックし、バースト中に画面が真っ暗になる。 |
アトリビューションが解決される時間を確保してから getPaywall をフェッチする(例:activate から1〜2秒後、または onProfileUpdate が発火した後)。 | App.init() で getPaywall を呼び出す。 | アトリビューションがまだ取得されていない。ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントやASAパーソナライゼーションが静かにバイパスされる。 |
loadTimeout を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。 | getPaywall を無期限に待機する。 | タイムアウトなしでは、接続が悪いユーザーはネットワークが解決するまで空白の画面を見続けるか、アプリを閉じてしまう。 |
fetchPolicy と loadTimeout パラメーターのリファレンスについてはペイウォールとプロダクトのフェッチを、適切なプレースメントの選択についてはプレースメントを参照してください。
接続が悪い環境向けの調整
接続が安定しない市場(農村部、移動中、ルーティングの問題が多い地域)向けには:
- 最初のフェッチを除くすべてのフェッチで
fetchPolicy: .returnCacheDataElseLoadを設定する。 - Adapty ダッシュボードですべてのプレースメントにフォールバックペイウォールを設定する。
loadTimeoutを3〜5秒に設定し、タイムアウトが発生した場合はフォールバックを受け入れる。- ペイウォールの表示を
getProfile()に依存させない。getPaywallは独立して呼び出すことで、プロファイルの取得が遅くてもUIをブロックしないようにする。