React Native SDKでのペイウォール取得を最適化する
React Nativeでペイウォールを確実に取得するには、高速なレンダリング、オーディエンスターゲティングが適用されたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバックという3つの要件を満たす必要があります。以下のルールでは、それを実現するためのタイミング、キャッシュ、フォールバックのパターンを説明します。
これらのルールは、adapty.activate() と adapty.identify() がすでに解決済みであることを前提としています。詳しくはReact Native SDKのコール順序をご覧ください。
ルールと注意点
| 推奨する方法 | 避けるべき方法 | 理由 |
|---|---|---|
| 表示しようとしているプレースメントのみを取得する。 | 起動時にすべてのプレースメントを並列で事前取得する。 | 一括事前取得はJSスレッドをブロックし、バーストの間にブラックスクリーンが発生する。 |
アトリビューションが解決される機会があった後に getPaywall を取得する — たとえば、activate の1〜2秒後、または onProfileUpdate が発火した後。 | ルートコンポーネントのマウント時に getPaywall を呼び出す。 | アトリビューションがまだ適用されていない。ペイウォールがデフォルトのオーディエンスに対して解決され、セグメントやASAのパーソナライゼーションが無効になる。 |
loadTimeoutMs を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。 | getPaywall を無期限に待機する。 | タイムアウトなしでは、接続状況が悪いユーザーはネットワークが解決されるまで空白の画面を見続けるか、アプリを閉じてしまう。 |
fetchPolicy と loadTimeoutMs パラメーターのリファレンスはペイウォールとプロダクトの取得を、適切なプレースメントの選択はプレースメントをご覧ください。
接続状況が悪い場合のチューニング
接続状況が継続的に悪い市場(農村部、乗り物での移動中、ルーティングの影響を受ける地域)向けには:
- 最初の取得を除くすべての取得に
fetchPolicy: .returnCacheDataElseLoadを設定する。 - Adaptyダッシュボードですべてのプレースメントにフォールバックペイウォールを設定する。
loadTimeoutMsを3〜5秒に設定し、タイムアウトが発火したときはフォールバックを受け入れる。getProfile()の完了をペイウォール表示の条件にしない。getPaywallを独立して呼び出すことで、プロファイルの遅延がUIをブロックしないようにする。