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

Unity でペイウォールを確実に取得するには、次の3つが必要です: 高速な表示、オーディエンスにターゲティングされたペイウォールの返却、そしてネットワークが遅い場合のグレースフルなフォールバック。以下のルールでは、そのためのタイミング、キャッシュ、フォールバックのパターンについて説明します。

これらのルールは、Adapty.Activate()Adapty.Identify() がすでに解決済みであることを前提としています。詳細は Unity SDK のコール順序 を参照してください。

ルールと注意点

このようにするこのようにしない理由
表示しようとしているプレースメントを取得する。起動時にすべてのプレースメントを並行してプリフェッチする。一括プリフェッチはメインスレッドをブロックし、バースト中にブラックスクリーンが発生する。
アトリビューションが解決する時間を確保した後で GetPaywall を取得する(例: Activate から 1〜2 秒後、または OnLoadLatestProfile が発火した後)。Awake()GetPaywall を呼び出す。アトリビューションがまだ到達していない。ペイウォールはデフォルトのオーディエンスに対して解決され、セグメントや ASA パーソナライゼーションがサイレントにバイパスされる。
loadTimeout を設定し、すべてのプレースメントにフォールバックペイウォールを設定する。GetPaywall を無期限に待機する。タイムアウトを設定しない場合、接続品質の低いユーザーはネットワークが解決するまで空白画面を見続けるか、アプリを閉じてしまう。

fetchPolicyloadTimeout パラメータのリファレンスは ペイウォールとプロダクトの取得 を参照してください。また、適切なプレースメントの選び方は プレースメント を参照してください。

接続が不安定な環境向けの調整

接続品質が一貫して低い市場(農村部、交通機関内、ルーティングの影響を受ける地域)向け:

  • 最初のフェッチ以外のすべてのフェッチで fetchPolicyAdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad に設定する。
  • Adapty ダッシュボードですべてのプレースメントにフォールバックペイウォールを設定する。
  • loadTimeout を 3〜5 秒に設定し、タイムアウト発生時はフォールバックを受け入れる。
  • ペイウォールの表示を GetProfile に依存させない。GetPaywall を独立して呼び出すことで、プロファイルの取得が遅くても UI がブロックされないようにする。