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

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

以下のルールは、adapty.activate()adapty.identify() がすでに完了していることを前提としています。詳しくは Capacitor SDK の呼び出し順序 を参照してください。

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

ルールと注意事項

することしないこと理由
表示しようとしているプレースメントを取得する。起動時にすべてのプレースメントを並行してプリフェッチする。一括プリフェッチはメインスレッドをブロックし、バースト中に黒画面を引き起こす。
アトリビューションが解決される機会を得た後に 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 は独立して呼び出す。