React Native SDKでのペイウォール取得を最適化する

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

これらのルールは、adapty.activate()adapty.identify() がすでに解決済みであることを前提としています。詳しくはReact Native SDKのコール順序をご覧ください。

ルールと注意点

推奨する方法避けるべき方法理由
表示しようとしているプレースメントのみを取得する。起動時にすべてのプレースメントを並列で事前取得する。一括事前取得はJSスレッドをブロックし、バーストの間にブラックスクリーンが発生する。
アトリビューションが解決される機会があった後に getPaywall を取得する — たとえば、activate の1〜2秒後、または onProfileUpdate が発火した後。ルートコンポーネントのマウント時に getPaywall を呼び出す。アトリビューションがまだ適用されていない。ペイウォールがデフォルトのオーディエンスに対して解決され、セグメントやASAのパーソナライゼーションが無効になる。
loadTimeoutMs を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。getPaywall を無期限に待機する。タイムアウトなしでは、接続状況が悪いユーザーはネットワークが解決されるまで空白の画面を見続けるか、アプリを閉じてしまう。

fetchPolicyloadTimeoutMs パラメーターのリファレンスはペイウォールとプロダクトの取得を、適切なプレースメントの選択はプレースメントをご覧ください。

接続状況が悪い場合のチューニング

接続状況が継続的に悪い市場(農村部、乗り物での移動中、ルーティングの影響を受ける地域)向けには:

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