---
title: "Unity SDKでリモートコンフィグペイウォールのペイウォールとプロダクトを取得する"
description: "Adapty Unity SDKでペイウォールとプロダクトを取得し、ユーザーのマネタイズを強化する。"
---

リモートコンフィグやカスタムペイウォールを表示する前に、それらの情報を取得する必要があります。このトピックはリモートコンフィグおよびカスタムペイウォールに関するものです。ペイウォールビルダーでカスタマイズしたペイウォールの取得方法については、[ペイウォールビルダーのペイウォールと設定の取得](unity-get-pb-paywalls)を参照してください。

:::tip

Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか？ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演している[サンプルアプリ](sample-apps)をご覧ください。

:::

<details>
   <summary>モバイルアプリでペイウォールとプロダクトの取得を始める前に（クリックして展開）</summary>

   1. Adapty ダッシュボードで[プロダクトを作成する](create-product)。

2. Adapty ダッシュボードで[ペイウォールを作成し、プロダクトをペイウォールに組み込む](create-paywall)。

3. Adapty ダッシュボードで[プレースメントを作成し、ペイウォールをプレースメントに組み込む](create-placement)。

4. モバイルアプリに[Adapty SDKをインストールする](sdk-installation-unity)。
</details>

## ペイウォール情報の取得 \{#fetch-paywall-information\}

Adaptyでは、[プロダクト](product)はApp StoreとGoogle Play両方のプロダクトを組み合わせたものです。これらのクロスプラットフォームプロダクトはペイウォールに統合され、特定のモバイルアプリのプレースメント内で表示できます。

プロダクトを表示するには、`getPaywall` メソッドを使って[プレースメント](placements)のいずれかから[ペイウォール](paywalls)を取得する必要があります。

:::important
**プロダクトIDをハードコードしないでください。** ハードコードすべき唯一のIDはプレースメントIDです。ペイウォールはリモートで設定されるため、プロダクトの数や利用可能なオファーはいつでも変わる可能性があります。アプリはこれらの変更を動的に処理する必要があります。今日ペイウォールが2つのプロダクトを返し、明日3つ返しても、コード変更なしにすべて表示できるようにしてください。
:::

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

| パラメータ | 必須/任意 | 説明 |
|---------|--------|-----------|
| **placementId** | 必須 | [プレースメント](placements)の識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| **locale** | <p>任意</p><p>デフォルト: `en`</p> | <p>[ペイウォールのローカライゼーション](add-remote-config-locale)の識別子。このパラメータはマイナス（**-**）文字で区切られた1つ以上のサブタグで構成される言語コードを指定します。最初のサブタグは言語、2番目は地域を表します。</p><p></p><p>例: `en` は英語、`pt-br` はブラジルポルトガル語を表します。</p><p></p><p>ロケールコードの詳細と推奨される使い方については、[ローカライゼーションとロケールコード](unity-localizations-and-locale-codes)を参照してください。</p> |
| **fetchPolicy** | デフォルト: `.reloadRevalidatingCacheData` | <p>デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、この設定を推奨します。</p><p></p><p>ただし、ユーザーのインターネット接続が不安定だと思われる場合は、`.returnCacheDataElseLoad` を使用してキャッシュデータが存在する場合に返すことを検討してください。この場合、ユーザーは最新データを取得できないことがありますが、通信状況に関わらず読み込みが速くなります。キャッシュは定期的に更新されるため、セッション中のネットワークリクエスト削減に安全に使用できます。</p><p></p><p>キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動でのクリア時のみ削除されます。</p><p></p><p>Adapty SDKはペイウォールを2層で保存します。上記の定期更新キャッシュと[フォールバックペイウォール](unity-use-fallback-paywalls)です。また、CDNを使用してペイウォールを高速に取得し、CDNが利用できない場合のスタンドアロンフォールバックサーバーも用意しています。このシステムは、インターネット接続が不安定な環境でも常に最新バージョンのペイウォールを確実に取得できるよう設計されています。</p> |
| **loadTimeout** | デフォルト: 5秒 | <p>このメソッドのタイムアウトを制限します。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。</p><p></p><p>このメソッドは内部で複数のリクエストを実行する場合があるため、まれに `loadTimeout` で指定した時間よりわずかに遅れてタイムアウトすることがあります。</p> |

プロダクトIDはハードコードしないでください！ペイウォールはリモートで設定されるため、利用可能なプロダクト、プロダクトの数、特典（無料トライアルなど）は時間とともに変わる場合があります。これらのシナリオをコードで処理するようにしてください。  
例えば、最初に2つのプロダクトを取得した場合、アプリはその2つを表示します。後で3つのプロダクトを取得した場合も、コード変更なしにすべての3つを表示できるようにしてください。ハードコードが必要なのはプレースメントIDだけです。

レスポンスパラメータ:

| パラメータ | 説明 |
| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Paywall   | プロダクトIDのリスト、ペイウォール識別子、リモートコンフィグ、その他いくつかのプロパティを含む [`AdaptyPaywall`](https://unity.adapty.io/class_adapty_s_d_k_1_1_adapty_paywall.html) オブジェクト。 |

## プロダクトの取得 \{#fetch-products\}

ペイウォールを取得したら、対応するプロダクト配列を取得できます:

```csharp showLineNumbers
Adapty.GetPaywallProducts(paywall, (products, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // products - the requested products array
});
```

レスポンスパラメータ:

| パラメータ | 説明 |
| :-------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Products  | プロダクト識別子、プロダクト名、価格、通貨、サブスクリプション期間、その他いくつかのプロパティを含む [`AdaptyPaywallProduct`](https://unity.adapty.io/class_adapty_s_d_k_1_1_adapty_paywall_product.html) オブジェクトのリスト。 |

独自のペイウォールデザインを実装する場合、[`AdaptyPaywallProduct`](https://unity.adapty.io/class_adapty_s_d_k_1_1_adapty_paywall_product.html) オブジェクトのプロパティへのアクセスが必要になるでしょう。以下によく使用されるプロパティを示しますが、すべての利用可能なプロパティの詳細はリンク先のドキュメントを参照してください。

| プロパティ | 説明 |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Title** | プロダクトのタイトルを表示するには `product.LocalizedTitle` を使用してください。ローカライゼーションはデバイス自体のロケールではなく、ユーザーが選択しているストアの国に基づきます。 |
| **Price** | ローカライズされた価格を表示するには `product.Price.LocalizedString` を使用してください。このローカライゼーションはデバイスのロケール情報に基づきます。`product.Price.Amount` を使用して価格を数値として取得することもできます。値はローカル通貨で提供されます。関連する通貨記号を取得するには `product.Price.CurrencySymbol` を使用してください。 |
| **Subscription Period** | 期間（週、月、年など）を表示するには `product.Subscription?.LocalizedPeriod` を使用してください。このローカライゼーションはデバイスのロケールに基づきます。プログラムでサブスクリプション期間を取得するには `product.Subscription?.Period` を使用してください。そこから `Unit` 列挙型にアクセスして長さを取得できます（`AdaptySubscriptionPeriodUnit.Day`、`AdaptySubscriptionPeriodUnit.Week`、`AdaptySubscriptionPeriodUnit.Month`、`AdaptySubscriptionPeriodUnit.Year`、または `AdaptySubscriptionPeriodUnit.Unknown`）。`NumberOfUnits` の値で期間単位の数を取得できます。例えば、四半期サブスクリプションの場合、Unit プロパティに `AdaptySubscriptionPeriodUnit.Month`、NumberOfUnits プロパティに `3` が表示されます。 |
| **Introductory Offer** | サブスクリプションに初回オファーが含まれているかをバッジなどで示すには、`product.Subscription?.Offer?.Phases` プロパティを確認してください。これは最大2つの割引フェーズ（無料トライアルフェーズと初回価格フェーズ）を含むことができるリストです。各フェーズオブジェクトには以下の便利なプロパティが含まれます:<br/>• `PaymentMode`: `AdaptyPaymentMode.FreeTrial`、`AdaptyPaymentMode.PayAsYouGo`、`AdaptyPaymentMode.PayUpFront`、`AdaptyPaymentMode.Unknown` の値を持つ列挙型。無料トライアルは `AdaptyPaymentMode.FreeTrial` 型になります。<br/>• `Price`: 割引価格（数値）。無料トライアルの場合は `0` になります。<br/>• `LocalizedNumberOfPeriods`: オファーの長さをデバイスのロケールでローカライズした文字列。例えば、3日間のトライアルオファーの場合、このフィールドに `"3 days"` が表示されます。<br/>• `SubscriptionPeriod`: オファー期間の個別の詳細をこのプロパティで取得することもできます。オファーに対しても前のセクションと同様に機能します。<br/>• `LocalizedSubscriptionPeriod`: ユーザーのロケールに対応した割引のサブスクリプション期間のフォーマット済み文字列。 |

## デフォルトオーディエンスペイウォールでペイウォール取得を高速化する \{#speed-up-paywall-fetching-with-default-audience-paywall\}

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

この問題に対処するには、`GetPaywallForDefaultAudience` メソッドを使用します。このメソッドは **All Users** オーディエンス向けの指定プレースメントのペイウォールを取得します。ただし、上記の[ペイウォールの取得](#fetch-paywall)セクションで詳述した `getPaywall` メソッドでペイウォールを取得することが推奨アプローチであることを理解しておくことが重要です。

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

- **互換性の問題**: 複数のアプリバージョンをサポートする際に問題が生じる可能性があり、後方互換性のあるデザインが必要か、古いバージョンで表示が崩れることを許容する必要があります。
- **パーソナライゼーションなし**: 「All Users」オーディエンス向けのコンテンツのみ表示され、国、アトリビューション、カスタム属性に基づくターゲティングが無効になります。

ユースケースでこれらのデメリットよりも高速な取得が重要な場合は、以下のように `GetPaywallForDefaultAudience` を使用してください。それ以外の場合は、[上記](#fetch-paywall)で説明した `GetPaywall` を使用してください。
:::

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

パラメータ:

| パラメータ | 必須/任意 | 説明 |
|---------|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **placementId** | 必須 | 対象の[プレースメント](placements)の識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| **locale** | <p>任意</p><p>デフォルト: `en`</p> | <p>ペイウォールのローカライゼーションの識別子。このパラメータはマイナス（**-**）文字で区切られた1つまたは2つのサブタグで構成される言語コードを指定します。最初のサブタグは言語、2番目は地域を表します。</p><p></p><p>例: `en` は英語、`pt-br` はブラジルポルトガル語を表します。</p> |
| **fetchPolicy** | デフォルト: `.reloadRevalidatingCacheData` | <p>デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、このオプションを推奨します。</p><p></p><p>ただし、ユーザーのインターネット接続が不安定だと思われる場合は、`.returnCacheDataElseLoad` を使用してキャッシュデータが存在する場合に返すことを検討してください。この場合、ユーザーは最新データを取得できないことがありますが、通信状況に関わらず読み込みが速くなります。キャッシュは定期的に更新されるため、セッション中のネットワークリクエスト削減に安全に使用できます。</p><p></p><p>キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動でのクリア時のみ削除されます。</p><p></p><p>Adapty SDKはペイウォールをローカルに2層で保存します。上記の定期更新キャッシュとフォールバックペイウォールです。また、CDNを使用してペイウォールを高速に取得し、CDNが利用できない場合のスタンドアロンフォールバックサーバーも用意しています。このシステムは、インターネット接続が不安定な環境でも常に最新バージョンのペイウォールを確実に取得できるよう設計されています。</p> |