Unity SDKでリモートコンフィグペイウォールのペイウォールとプロダクトを取得する

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

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

モバイルアプリでペイウォールとプロダクトの取得を始める前に(クリックして展開)
  1. Adapty ダッシュボードでプロダクトを作成する

  2. Adapty ダッシュボードでペイウォールを作成し、プロダクトをペイウォールに組み込む

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

  4. モバイルアプリにAdapty SDKをインストールする

ペイウォール情報の取得

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

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

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

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番目は地域を表します。

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

ロケールコードの詳細と推奨される使い方については、ローカライゼーションとロケールコードを参照してください。

fetchPolicyデフォルト: .reloadRevalidatingCacheData

デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、この設定を推奨します。

ただし、ユーザーのインターネット接続が不安定だと思われる場合は、.returnCacheDataElseLoad を使用してキャッシュデータが存在する場合に返すことを検討してください。この場合、ユーザーは最新データを取得できないことがありますが、通信状況に関わらず読み込みが速くなります。キャッシュは定期的に更新されるため、セッション中のネットワークリクエスト削減に安全に使用できます。

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

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

loadTimeoutデフォルト: 5秒

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

このメソッドは内部で複数のリクエストを実行する場合があるため、まれに loadTimeout で指定した時間よりわずかに遅れてタイムアウトすることがあります。

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

レスポンスパラメータ:

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

プロダクトの取得

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

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

レスポンスパラメータ:

パラメータ説明
Productsプロダクト識別子、プロダクト名、価格、通貨、サブスクリプション期間、その他いくつかのプロパティを含む AdaptyPaywallProduct オブジェクトのリスト。

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

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

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

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

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

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

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

ユースケースでこれらのデメリットよりも高速な取得が重要な場合は、以下のように 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デフォルト: .reloadRevalidatingCacheData

デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュデータを返します。ユーザーが常に最新のデータを取得できるため、このオプションを推奨します。

ただし、ユーザーのインターネット接続が不安定だと思われる場合は、.returnCacheDataElseLoad を使用してキャッシュデータが存在する場合に返すことを検討してください。この場合、ユーザーは最新データを取得できないことがありますが、通信状況に関わらず読み込みが速くなります。キャッシュは定期的に更新されるため、セッション中のネットワークリクエスト削減に安全に使用できます。

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

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