フローとペイウォールを取得する - Unity

GetFlow で取得される内容
✦
フロー Flow & Paywall Builder で作成——デバイス上でネイティブにレンダリングされ、WebView は不要
✦
旧 Paywall Builder のペイウォール 旧 Paywall Builder で作成された既存のすべてのコンテンツ

フローのデザインが完了したら、モバイルアプリにそれを表示できます。最初のステップは、プレースメントに関連付けられたフローまたはペイウォールと、そのビュー設定を取得することです。詳細は以下をご覧ください。

Tip

Adapty SDK がモバイルアプリにどのように組み込まれているか、実際の例を見たいですか?ペイウォールの表示、購入処理、その他の基本的な機能を含むフルセットアップを示したサンプルアプリをご覧ください。

始める前に

以下のものが必要です:

フローまたはペイウォールを取得する

ビルダーでフローまたはペイウォールを設計した場合、それをユーザーに表示するためにモバイルアプリのコードでレンダリングを実装する必要はありません。そのようなフローまたはペイウォールには、表示する内容と表示方法の両方が含まれています。ただし、プレースメントを通じてそのIDを取得し、ビュー設定を取得した上で、モバイルアプリ内で表示する必要があります。

最適なパフォーマンスを確保するためには、フローまたはペイウォールとそのビュー設定をできるだけ早く取得し、ユーザーに表示する前に画像のダウンロードに十分な時間を確保することが重要です。

フローまたはペイウォールを取得するには、GetFlow メソッドを使用します:

Adapty.GetFlow(
    "YOUR_PLACEMENT_ID",
    AdaptyPlacementFetchPolicy.Default,
    TimeSpan.FromSeconds(5),
    (flow, error) => {
        if (error != null) {
            // handle the error
            return;
        }

        // flow - the requested flow/paywall
    }
);

パラメーター:

パラメータ必須/任意説明
placementId必須取得したいプレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
fetchPolicyデフォルト: AdaptyPlacementFetchPolicy.Default

fetchPolicy は、SDK がどのレイヤーを最初に読み取るかを設定します(キャッシュを使用できるかどうかではありません)。デフォルトでは、SDK はまずサーバーにアクセスし、そのリクエストが失敗した場合にキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、このバリアントを推奨します。

ただし、ユーザーが不安定なインターネット環境を利用していると考えられる場合は、AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad の使用を検討してください。これは順序を逆にして、まずキャッシュを読み取り、何もキャッシュされていない場合のみサーバーにアクセスします。ユーザーは最新のデータを取得できない場合がありますが、インターネット接続が不安定な状況でも高速なロードを体験できます。キャッシュは定期的に更新されるため、ネットワークリクエストを避けるためにセッション中に使用しても安全です。

3 番目のポリシー AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge) は、この 2 つの中間に位置します。キャッシュのコピーが指定した TimeSpan より新しい間はキャッシュを最初に読み取り、古くなった場合はサーバーにアクセスします。

キャッシュはアプリを再起動しても保持され、アプリを再インストールするか手動でクリアした場合にのみ削除されます。

Adapty SDK はフローとペイウォールをローカルの 2 つのレイヤーに保存します。1 つは上記の定期更新されるキャッシュ、もう 1 つはフォールバックペイウォールです。また、より高速な取得のために CDN を使用し、CDN が到達不能な場合に備えてスタンドアロンのフォールバックサーバーも使用します。このシステムは、インターネット接続が乏しい場合でも信頼性を確保しながら、常に最新バージョンを取得できるよう設計されています。

loadTimeoutデフォルト: 5 秒

この値はこのメソッドのタイムアウトを制限します。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。

まれに、このメソッドが loadTimeout で指定した時間よりも若干遅れてタイムアウトする場合があります。これは、内部的に複数の異なるリクエストで構成されている場合があるためです。

レスポンスパラメーター:

パラメーター説明
FlowAdaptyFlow オブジェクト。プレースメント、識別子(InstanceIdentity、VariationId)、名前、ペイウォールバリアント(Paywalls — AdaptyFlowPaywall のリスト)、リモートコンフィグ(RemoteConfigs — ロケールごとに1エントリのリスト)を含みます。事前ロード、カスタム UI、またはプログラム的なチェックのために実際のプロダクトを取得するには、GetPaywallProducts(flow) を呼び出してください。

ビューの設定を取得する

フローまたはペイウォールを取得したら、CreateFlowView メソッドを使ってビューの設定を読み込み、ビューをまとめて作成します。確認すべき個別のフラグはありません。プレースメントが Flow & Paywall Builder(フロー)または old Paywall Builder(ペイウォール)で設計されている場合、CreateFlowView は表示可能なビューを返します。プレースメントがビルダーUIを持たないカスタムペイウォールの場合、CreateFlowView はエラーを返します — リモートコンフィグペイウォールとして処理してください。

Important

フローを公開してください。未公開の編集があるフローは Dirty ステータスになり、そのプレースメントは最後に公開されたバージョンを配信し続けます。

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetPreloadProducts(true)
    .SetLoadTimeout(TimeSpan.FromSeconds(5));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    if (error != null) {
        // the flow has no view configured, or view creation failed
        return;
    }

    // use view
});
パラメーター必須/任意説明
flow必須Adapty.GetFlow で取得した AdaptyFlow オブジェクト。
Locale任意フローまたはペイウォールのレンダリングに使用するビルダーのローカライゼーションの識別子(例:en、pt-br)。フローのローカライゼーションはビューの作成時に適用されるため、ここが唯一の設定箇所です。SDK はデバイスのロケールを読み取りません。このパラメーターを省略した場合、フローは en でレンダリングされます。ただし、フローに en のローカライゼーションがない場合はデフォルトのロケールが使用されます。指定するコードはフローのローカライゼーションコードと完全に一致する必要があります。詳細はローカライゼーションとロケールコードの使い方を参照してください。
LoadTimeout任意このメソッドのタイムアウトを制限する値です。タイムアウトに達した場合、キャッシュされたデータまたはローカルのフォールバックが返されます。このメソッドは内部で複数のリクエストを実行する場合があるため、まれに LoadTimeout で指定した時間よりわずかに遅くタイムアウトすることがあります。
PreloadProducts任意true に設定すると、パフォーマンス向上のためにプロダクトを事前読み込みします。有効にすると、プロダクトが事前にロードされ、フローまたはペイウォールの表示にかかる時間が短縮されます。
CustomTags任意フローのカスタムタグに対するアプリの値を、各タグのフル名をキーとした辞書で指定します。辞書は SetCustomTags メソッドに渡してください。詳細はフローへのデータの渡し方を参照してください。
ProductPurchaseParameters任意Android のみ(iOS では無視されます)。AdaptyProductIdentifier をキー、AdaptyPurchaseParameters を値とする辞書です。フローまたはペイウォール内の個々のプロダクトに対して、パーソナライズされたオファーやサブスクリプション更新パラメーターなど、購入固有のパラメーターを設定するために使用します。
EnableSafeAreaPaddings任意Android のみ(iOS では無視されます)。true の場合、フロービューにセーフエリアのパディングが適用されます。デフォルト値は true で、ほとんどのケースに適しています。
Note

複数の言語を使用している場合は、ビルダーのローカライゼーションを追加する方法をご確認ください。

読み込みが完了したら、フローまたはペイウォールを表示してください。

デフォルトオーディエンス向けのフローまたはペイウォールを取得して高速化する

通常、フローやペイウォールはほぼ瞬時に取得されるため、速度を気にする必要はありません。ただし、オーディエンスやプレースメントが多数あり、ユーザーのインターネット接続が不安定な場合は、フローやペイウォールの取得に想定以上の時間がかかることがあります。そのような状況では、何も表示しないよりも、デフォルトのフローまたはペイウォールを表示することでスムーズなユーザー体験を確保したい場合があります。

この問題に対処するために、GetFlowForDefaultAudience メソッドを使用できます。このメソッドは、指定されたプレースメントの All Users オーディエンス向けのフローまたはペイウォールを取得します。ただし、推奨されるアプローチは GetFlow メソッドでフローまたはペイウォールを取得することであり、その詳細は上記のフロー/ペイウォールの取得セクションを参照してください。

Warning

GetFlow を推奨する理由

GetFlowForDefaultAudience メソッドにはいくつかの重大な欠点があります:

  • 後方互換性の問題: 異なるアプリバージョン(現行版と将来版)で異なるフローを表示する必要がある場合、課題が生じる可能性があります。現行(レガシー)バージョンをサポートするフローを設計するか、現行(レガシー)バージョンのユーザーがレンダリングされないフローで問題に遭遇することを受け入れるかのどちらかになります。
  • ターゲティングの喪失: すべてのユーザーが All Users オーディエンス向けに設計された同じフローを見ることになるため、パーソナライズされたターゲティング(国、マーケティングアトリビューション、独自のカスタム属性に基づくものを含む)が失われます。

これらのデメリットを受け入れてでもフローやペイウォールの取得を高速化したい場合は、以下のように GetFlowForDefaultAudience メソッドを使用してください。そうでない場合は、上記で説明した GetFlow を使用してください。

Adapty.GetFlowForDefaultAudience(
    "YOUR_PLACEMENT_ID",
    AdaptyPlacementFetchPolicy.Default,
    (flow, error) => {
        if (error != null) {
            // handle the error
            return;
        }

        // flow - the requested flow
    }
);
パラメーター必須/任意説明
placementId必須プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
fetchPolicyデフォルト: AdaptyPlacementFetchPolicy.Default

fetchPolicy は、SDK がどのレイヤーを最初に読み取るかを設定するものであり、キャッシュを使用できるかどうかを制御するものではありません。デフォルトでは、SDK はまずサーバーにアクセスし、リクエストが失敗した場合にキャッシュされたデータを返します。ユーザーが常に最新のデータを受け取れるよう、このバリアントを推奨します。

ただし、ユーザーが不安定なインターネット環境にいると思われる場合は、AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad の利用を検討してください。これは順序を逆にし、まずキャッシュを読み取り、キャッシュに何もない場合にのみサーバーにアクセスします。ユーザーは最新のデータを取得できない場合がありますが、インターネット接続が不安定な場合でも読み込み時間が短くなります。キャッシュは定期的に更新されるため、セッション中にネットワークリクエストを避ける目的で使用しても安全です。

3 番目のポリシーである AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge) は、この 2 つの中間に位置します。キャッシュのコピーが指定した TimeSpan より新しい間はキャッシュを先に読み取り、古くなったらサーバーにアクセスします。

キャッシュはアプリの再起動後も保持され、アプリの再インストール時または手動でのクリーンアップ時にのみクリアされます。

アセットのカスタマイズ

フローまたはペイウォール内の画像や動画をカスタマイズするには、カスタムアセットを実装します。

ヒーロー画像と動画には、あらかじめ hero_image および hero_video というIDが定義されています。カスタムアセットバンドルでは、これらのIDを使って要素を指定し、動作をカスタマイズします。

その他の画像や動画については、Adapty ダッシュボードでカスタムIDを設定する必要があります。

たとえば、次のようなことができます。

  • 一部のユーザーに異なる画像や動画を表示する。
  • リモートのメイン画像を読み込んでいる間、ローカルのプレビュー画像を表示する。
  • 動画を再生する前にプレビュー画像を表示する。
  • アプリにバンドルされたメディアを表示し、最初の画面をダウンロードなしでレンダリングする。アプリバンドルから最初の画面のメディアを表示するを参照してください。

カスタムアセットをシンプルなディクショナリで提供する方法の例を次に示します。

var customAssets = new Dictionary<string, AdaptyCustomAsset>
{
    { "custom_image", AdaptyCustomAsset.LocalImageFile("custom_assets/images/custom_image.png") },
    { "hero_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/custom_video.mp4") }
};

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetCustomAssets(customAssets)
    .SetLoadTimeout(TimeSpan.FromSeconds(3));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});
Note

アセットが見つからない場合や読み込みに失敗した場合、フローまたはペイウォールはビルダーで設定されたデフォルトの外観にフォールバックします。

カスタムタイマーの設定

Unity アプリでカスタムタイマーを使用するには、タイマー ID と終了日時のディクショナリを SetCustomTimers メソッドに渡します。以下に例を示します。

var customTimers = new Dictionary<string, DateTime> {
    { "CUSTOM_TIMER_6H", DateTime.Now.AddHours(6) },
    { "CUSTOM_TIMER_NY", new DateTime(2026, 1, 1) }
};

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetCustomTimers(customTimers)
    .SetLoadTimeout(TimeSpan.FromSeconds(3));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});

この例では、CUSTOM_TIMER_NY と CUSTOM_TIMER_6H は、Adapty ダッシュボードで設定した開発者定義タイマーの Timer ID です。タイマーリゾルバーにより、アプリは各タイマーを正しい値で動的に更新します。例えば:

  • CUSTOM_TIMER_NY: 元日など、タイマー終了までの残り時間。
  • CUSTOM_TIMER_6H: ユーザーがフローまたはペイウォールを開いた時点から始まる6時間の残り時間。

Adapty ダッシュボードの旧ペイウォールビルダーでペイウォールのビジュアル部分をデザインしたら、モバイルアプリにそれを表示できます。このプロセスの最初のステップは、プレースメントに関連付けられたペイウォールとそのビュー設定を取得することです。

Warning

SDK 3.x ペイウォールビルダーで作成したペイウォールには、Unity SDK バージョン 3.3.0 以上が必要です。

ペイウォールビルダーでカスタマイズされたペイウォールに関するトピックです。ペイウォールを手動で実装する場合は、リモートコンフィグペイウォールのペイウォールとプロダクトをモバイルアプリで取得するトピックをご参照ください。

Tip

Adapty SDK がモバイルアプリにどのように組み込まれているか、実際の例を見たいですか?ペイウォールの表示、購入処理、その他の基本的な機能を含むフルセットアップを示したサンプルアプリをご覧ください。

モバイルアプリでペイウォールの表示を始める前に(クリックして展開)
  1. Adapty ダッシュボードでプロダクトを作成します。
  2. Adapty ダッシュボードでペイウォールを作成し、プロダクトを追加します。
  3. Adapty ダッシュボードでプレースメントを作成し、ペイウォールを追加します。
  4. モバイルアプリに Adapty SDK をインストールします。

ペイウォールビルダーで設計したペイウォールを取得する

ペイウォールビルダーでペイウォールを設計した場合、ユーザーに表示するためにモバイルアプリのコードでレンダリング処理を書く必要はありません。このようなペイウォールには、表示内容と表示方法の両方が含まれています。ただし、プレースメントからペイウォールのIDを取得し、ビュー設定を取得してからモバイルアプリに表示する必要があります。

最適なパフォーマンスを確保するために、ペイウォールとビュー設定はできるだけ早く取得し、ユーザーに表示する前に画像のダウンロードに十分な時間を確保することが重要です。

ペイウォールを取得するには、GetPaywall メソッドを使用します:

Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});

パラメーター:

パラメータ必須/任意説明
placementId必須取得したいプレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
locale

任意

デフォルト: en

ペイウォールのローカライズ識別子。マイナス(-)文字で区切られた1つまたは2つのサブタグで構成される言語コードを指定します。最初のサブタグは言語、2番目はリージョンを表します。

例: en は英語、pt-br はブラジルポルトガル語を表します。

ロケールコードおよび推奨される使用方法については、ローカライズとロケールコードを参照してください。

fetchPolicyデフォルト: AdaptyPlacementFetchPolicy.Default

fetchPolicy は、SDK がどのレイヤーを最初に読み取るかを設定するものであり、キャッシュを使用できるかどうかを制御するものではありません。デフォルトでは、SDK はまずサーバーへアクセスし、リクエストが失敗した場合にキャッシュデータを返します。ユーザーが常に最新のデータを受け取れるため、この設定を推奨します。

ただし、ユーザーが不安定なインターネット環境を使用していると考えられる場合は、AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad の使用を検討してください。この設定は順序を逆にし、まずキャッシュを読み取り、何もキャッシュされていない場合にのみサーバーへアクセスします。ユーザーが必ずしも最新のデータを取得できるとは限りませんが、インターネット接続が不安定な状況でも高速な読み込みを実現できます。キャッシュはセッション中も定期的に更新されるため、ネットワークリクエストを避けるために安全に使用できます。

3つ目のポリシーである AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge) は、2つの中間に位置します。指定した TimeSpan よりキャッシュが新しい場合はキャッシュを先に読み取り、古くなった場合はサーバーへアクセスします。

キャッシュはアプリの再起動後も保持され、アプリの再インストール時または手動でクリアした場合のみ削除されます。

Adapty SDK はペイウォールをローカルに2つのレイヤーで保存します。1つは上述の定期更新されるキャッシュ、もう1つはフォールバックペイウォールです。また、CDN を使用してペイウォールを高速に取得し、CDN が利用できない場合に備えてスタンドアロンのフォールバックサーバーも使用しています。このシステムは、インターネット接続が不安定な場合でも、常に最新バージョンのペイウォールを取得できるよう設計されています。

loadTimeoutデフォルト: 5秒

このメソッドのタイムアウト上限を設定します。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。

内部では複数のリクエストで構成される場合があるため、稀に loadTimeout で指定した時間よりもわずかに遅くタイムアウトすることがあります。

レスポンスパラメーター:

パラメーター説明
PaywallプロダクトIDのリスト、ペイウォール識別子、リモートコンフィグ、その他のプロパティを含む AdaptyPaywall オブジェクト。

ペイウォールビルダーで設計したペイウォールのビュー設定を取得する

Important

ペイウォールビルダーで Show on device トグルが有効になっていることを確認してください。このオプションがオンになっていない場合、ビュー設定を取得できません。

ペイウォールを取得したら、ViewConfiguration が含まれているかどうかを確認します。これはペイウォールビルダーで作成されたことを示します。ViewConfiguration が存在する場合はペイウォールビルダーのペイウォールとして扱い、存在しない場合はリモートコンフィグペイウォールとして処理します。

Unity SDK では、ビュー設定を手動で取得せずに、直接 CreatePaywallView メソッドを呼び出します。

Warning

CreatePaywallView メソッドの結果は1回のみ使用できます。再度使用する必要がある場合は、CreatePaywallView メソッドを再度呼び出してください。再作成せずに2回呼び出すと、AdaptyUIError.viewAlreadyPresented エラーが発生する場合があります。

var parameters = new AdaptyUICreatePaywallViewParameters()
  .SetPreloadProducts(preloadProducts)
  .SetLoadTimeout(new TimeSpan(0, 0, 3));

AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
  // handle the result
});

パラメーター:

パラメーター必須/任意説明
paywall必須対象のペイウォールのコントローラーを取得するための AdaptyPaywall オブジェクト。
loadTimeoutデフォルト: 5秒このメソッドのタイムアウトを制限する値です。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。内部で複数のリクエストが発生する場合があるため、まれに loadTimeout で指定した時間より少し遅くタイムアウトすることがあります。
PreloadProducts任意AdaptyPaywallProducts の配列を提供して、画面上のプロダクト表示タイミングを最適化します。nil が渡された場合、AdaptyUI は必要なプロダクトを自動的に取得します。
CustomTags任意カスタムタグとその解決済みの値の辞書を定義します。カスタムタグはペイウォールコンテンツのプレースホルダーとして機能し、ペイウォール内のパーソナライズされたコンテンツのために特定の文字列に動的に置き換えられます。詳細はペイウォールビルダーのカスタムタグのトピックを参照してください。
CustomTimers任意カスタムタイマーとその終了日時の辞書を定義します。カスタムタイマーを使用すると、ペイウォールにカウントダウンタイマーを表示できます。
Note

複数の言語をサポートする場合は、ペイウォールにローカライゼーションを追加してください。使用するコードについては、ローカライゼーションとロケールコードを参照してください。

ビューを取得したら、ペイウォールを表示します。

アセットをカスタマイズする

ペイウォール内の画像や動画をカスタマイズするには、カスタムアセットを実装します。

ヒーロー画像と動画には事前定義されたID(hero_image と hero_video)があります。カスタムアセットバンドルでは、これらのIDでターゲット要素を指定してカスタマイズします。

その他の画像や動画については、Adapty ダッシュボードでカスタムIDを設定する必要があります。

例えば、以下のことができます:

  • 一部のユーザーに異なる画像や動画を表示する。
  • リモートのメイン画像の読み込み中にローカルのプレビュー画像を表示する。
  • 動画再生前にプレビュー画像を表示する。
Important

この機能を使用するには、Adapty Unity SDK をバージョン 3.8.0 以降に更新してください。

シンプルな辞書でカスタムアセットを提供する例:

var customAssets = new Dictionary<string, AdaptyCustomAsset>
{
    { "custom_image", AdaptyCustomAsset.LocalImageFile("custom_assets/images/custom_image.png") },
    { "hero_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/custom_video.mp4") }
};

var parameters = new AdaptyUICreatePaywallViewParameters()
    .SetCustomAssets(customAssets)
    .SetLoadTimeout(new TimeSpan(0, 0, 3));

AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
    // handle the result
});
Note

アセットが見つからない場合、ペイウォールはデフォルトの表示にフォールバックします。

開発者定義のタイマーを設定する

Unity アプリでカスタムタイマーを使用するには、タイマーIDと終了日時の辞書を SetCustomTimers メソッドに直接渡します。以下に例を示します:

var customTimers = new Dictionary<string, DateTime> {
    { "CUSTOM_TIMER_6H", DateTime.Now.AddHours(6) },
    { "CUSTOM_TIMER_NY", new DateTime(2025, 1, 1) }
};

var parameters = new AdaptyUICreatePaywallViewParameters()
    .SetCustomTimers(customTimers)
    .SetLoadTimeout(new TimeSpan(0, 0, 3));

AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
    // handle the result
});

この例では、CUSTOM_TIMER_NY と CUSTOM_TIMER_6H は Adapty ダッシュボードで設定した開発者定義タイマーの Timer ID です。タイマーリゾルバーにより、アプリは各タイマーを正しい値で動的に更新します。例えば:

  • CUSTOM_TIMER_NY:元旦などのタイマー終了までの残り時間。
  • CUSTOM_TIMER_6H:ユーザーがペイウォールを開いてから始まる6時間の残り時間。

デフォルトオーディエンスのペイウォールでペイウォール取得を高速化する

通常、ペイウォールはほぼ即座に取得されるため、このプロセスを高速化することを心配する必要はありません。ただし、オーディエンスやペイウォールが多数あり、ユーザーのインターネット接続が弱い場合、ペイウォールの取得に想定より時間がかかることがあります。そのような場合、ペイウォールをまったく表示しないよりも、デフォルトのペイウォールを表示してスムーズなユーザー体験を確保したいことがあります。

これを解決するには、GetPaywallForDefaultAudience メソッドを使用できます。このメソッドは、指定されたプレースメントの All Users オーディエンス向けのペイウォールを取得します。ただし、推奨されるアプローチは、上記のペイウォールの取得セクションで説明されている getPaywall メソッドを使用してペイウォールを取得することである点を理解しておくことが重要です。

Warning

GetPaywallForDefaultAudience の代わりに GetPaywall の使用を検討してください。前者には重要な制限があります:

  • 互換性の問題: 複数のアプリバージョンをサポートする際に問題が生じる場合があり、後方互換性のある設計が必要になるか、古いバージョンで正しく表示されないことを許容しなければなりません。
  • パーソナライゼーションなし: 「全ユーザー」オーディエンス向けのコンテンツのみ表示され、国、アトリビューション、カスタム属性に基づくターゲティングは利用できません。

高速なフェッチがこれらのデメリットを上回るユースケースであれば、以下に示す GetPaywallForDefaultAudience を使用してください。それ以外の場合は、上記で説明した GetPaywall を使用してください。

Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});

パラメーター:

パラメーター必須/任意説明
placementId必須取得したいプレースメントの識別子です。Adapty ダッシュボードでプレースメントを作成する際に指定した値を使用してください。
locale

任意

デフォルト: en

ペイウォールのローカライズ識別子です。このパラメーターは、マイナス(-)文字で区切られた1つまたは2つのサブタグで構成される言語コードを指定します。最初のサブタグは言語、2番目のサブタグは地域を表します。

例: en は英語、pt-br はブラジルポルトガル語を表します。

fetchPolicyデフォルト: AdaptyPlacementFetchPolicy.Default

fetchPolicy は、SDKがキャッシュを使用できるかどうかではなく、どのレイヤーを最初に読み込むかを設定します。デフォルトでは、SDKはまずサーバーにアクセスし、リクエストが失敗した場合にキャッシュされたデータを返します。ユーザーが常に最新のデータを取得できるよう、このオプションを推奨します。

ただし、ユーザーが不安定なインターネット環境にいると考えられる場合は、AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad の使用を検討してください。これは順序を逆にし、まずキャッシュを読み込み、何もキャッシュされていない場合のみサーバーにアクセスします。ユーザーが最新のデータを取得できない場合もありますが、インターネット接続が不安定でも読み込みが速くなります。キャッシュは定期的に更新されるため、セッション中にネットワークリクエストを避けるために使用しても安全です。

3番目のポリシー AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge) は両者の中間に位置します。渡した TimeSpan よりキャッシュが新しい間はキャッシュを先に読み込み、古くなるとサーバーにアクセスします。

キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動クリーンアップ時にのみ消去されます。

Adapty SDK はペイウォールをローカルに2つのレイヤーで保存します。上記の定期更新されるキャッシュとフォールバックペイウォールです。また、ペイウォールをより速く取得するためにCDNを使用し、CDNが到達不能な場合に備えてスタンドアロンのフォールバックサーバーも使用します。このシステムは、インターネット接続が不安定な場合でも信頼性を確保しながら、常に最新バージョンのペイウォールを取得できるよう設計されています。