Capacitor SDK でのペイウォールフェッチを最適化する
Capacitor で確実なペイウォールフェッチを実現するには、高速なレンダリング、オーディエンスターゲティングに対応したペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックという3つの要件を満たす必要があります。以下のルールでは、それを達成するためのタイミング、キャッシュ、フォールバックのパターンについて説明します。
以下のルールは、adapty.activate() と adapty.identify() がすでに完了していることを前提としています。詳しくは Capacitor SDK の呼び出し順序 を参照してください。
以下のアドバイスでは v3 のメソッド名を使用しています。SDK v4 では getPaywall が getFlow に改名されています(移行ガイド 参照)が、すべてのルールはそのまま適用されます。
ルールと注意事項
| すること | しないこと | 理由 |
|---|---|---|
| 表示しようとしているプレースメントを取得する。 | 起動時にすべてのプレースメントを並行してプリフェッチする。 | 一括プリフェッチはメインスレッドをブロックし、バースト中に黒画面を引き起こす。 |
アトリビューションが解決される機会を得た後に getPaywall を取得する — たとえば、activate の 1〜2 秒後、または onLatestProfileLoad リスナーが発火した後。 | App.tsx のアプリ起動時に getPaywall を呼び出す。 | アトリビューションがまだ反映されていないため、ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントや ASA パーソナライズが暗黙的にスキップされる。 |
loadTimeoutMs を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。 | getPaywall を無制限に待機する。 | タイムアウトを設定しないと、接続が不安定なユーザーはネットワークが解決するまで空白画面を見続けるか、アプリを閉じてしまう。 |
詳細については、ペイウォールとプロダクトの取得(fetchPolicy および loadTimeoutMs パラメータのリファレンス)とプレースメント(適切なプレースメントの選択方法)を参照してください。 |
通信状態が悪い場合のチューニング
通信状態が常に悪い市場(地方エリア、移動中、ルーティングの問題がある地域)向けには:
- 初回以外のすべての取得で
fetchPolicy: 'return_cache_data_else_load'を設定する。 - Adapty ダッシュボードですべてのプレースメントにフォールバックペイウォールを設定する。
loadTimeoutMsを3000〜5000ミリ秒に設定し、タイムアウト時はフォールバックを受け入れる。adapty.getProfile()の完了をペイウォール表示の条件にしない。プロファイルの遅延でUIがブロックされないよう、getPaywallは独立して呼び出す。