Unity SDKでペイウォールビルダーのペイウォールと設定を取得する

Adapty ダッシュボードの新しいペイウォールビルダーでペイウォールのビジュアルを設計したら、モバイルアプリに表示できます。まずは、プレースメントに関連付けられたペイウォールとそのビュー設定を取得する必要があります。

新しいペイウォールビルダーは Unity SDK バージョン 3.3.0 以降で動作します。

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

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デフォルト: .reloadRevalidatingCacheData

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

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

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

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

loadTimeoutデフォルト: 5秒

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

内部で複数のリクエストが発生する場合があるため、まれに loadTimeout で指定した時間より少し遅くタイムアウトすることがあります。

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

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

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

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

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

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

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任意カスタムタイマーとその終了日時の辞書を定義します。カスタムタイマーを使用すると、ペイウォールにカウントダウンタイマーを表示できます。

複数の言語を使用する場合、ペイウォールビルダーのローカライズを追加する方法と、ロケールコードを正しく使用する方法をこちらで確認してください。

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

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

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

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

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

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

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

この機能を使用するには、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
});

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

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

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_NYCUSTOM_TIMER_6H は Adapty ダッシュボードで設定した開発者定義タイマーの Timer ID です。タイマーリゾルバーにより、アプリは各タイマーを正しい値で動的に更新します。例えば:

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

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

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

これに対応するために、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が利用できない場合のためにスタンドアロンのフォールバックサーバーも用意しています。このシステムは、インターネット接続が不安定な場合でも常に最新バージョンのペイウォールを取得できるよう設計されています。