フローとペイウォールの取得 - Unity
GetFlow で取得される内容 フローまたはペイウォールビルダーのペイウォールを設計したら、モバイルアプリで表示できます。最初のステップは、プレースメントに関連付けられたフローまたはペイウォールと、そのビュー設定を以下の手順で取得することです。
Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリをご覧ください。
モバイルアプリでフローを表示する前に(クリックして展開)
- Adapty ダッシュボードでプロダクトを作成します。
- Adapty ダッシュボードでフロー/ペイウォールを作成し、プロダクトを組み込みます。
- Adapty ダッシュボードでプレースメントを作成し、フロー/ペイウォールを組み込みます。
- モバイルアプリに 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 | デフォルトでは、SDK はサーバーからデータの読み込みを試み、失敗した場合はキャッシュされたデータを返します。この方式ではユーザーが常に最新のデータを取得できるため、推奨します。 ただし、ユーザーがインターネット接続の不安定な環境にいると想定される場合は、 キャッシュはアプリを再起動しても保持され、アプリの再インストール時または手動でクリアした場合にのみ削除されます。 Adapty SDK はフローとペイウォールをローカルに 2 層で保存します。1 層目は上述の定期更新キャッシュで、2 層目はフォールバックペイウォールです。また、取得を高速化するために CDN を使用し、CDN に到達できない場合に備えてスタンドアロンのフォールバックサーバーも用意しています。このシステムは、インターネット接続が不安定な状況でも常に最新バージョンを取得できるよう設計されています。 |
| loadTimeout | デフォルト: 5 秒 | このメソッドのタイムアウト上限を設定します。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。 なお、このメソッドは内部的に複数のリクエストで構成される場合があるため、まれに |
レスポンスパラメーター:
| パラメーター | 説明 |
|---|---|
| Flow | AdaptyFlow オブジェクト。プレースメント、識別子(InstanceIdentity、VariationId)、名前、ペイウォールバリアント(Paywalls — AdaptyFlowPaywall のリスト)、リモートコンフィグ(RemoteConfigs — ロケールごとに1エントリのリスト)を含みます。事前ロード、カスタム UI、またはプログラム的なチェックのために実際のプロダクトを取得するには、GetPaywallProducts(flow) を呼び出してください。 |
ビュー設定の取得
フローまたはペイウォールを取得したら、CreateFlowView メソッドを使ってビュー設定の読み込みとビューの作成を一度に行います。別途フラグを確認する必要はありません。プレースメントが Flow Builder(フロー)または Paywall Builder(ペイウォール)で設計されている場合、CreateFlowView は表示可能なビューを返します。プレースメントがビルダー UI のないカスタムペイウォールの場合、CreateFlowView はエラーを返します。その場合はリモートコンフィグペイウォールとして処理してください。
フローにビューを設定する際は、必ずフローBuilderの Show on device トグルを有効にしてください。このオプションが有効になっていない場合、ビュー設定を取得できません。
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 に設定すると、パフォーマンス向上のためにプロダクトを事前に読み込みます。有効にすると、プロダクトが事前ロードされ、フローまたはペイウォールの表示にかかる時間を短縮できます。 |
| ProductPurchaseParameters | 任意 | Android 専用(iOS では無視されます)。AdaptyProductIdentifier と AdaptyPurchaseParameters のディクショナリ。フローまたはペイウォール内の各プロダクトに対して、パーソナライズされたオファーやサブスクリプションの更新パラメーターなど、購入固有のパラメーターを設定するために使用します。 |
| EnableSafeAreaPaddings | 任意 | Android 専用(iOS では無視されます)。true の場合、フロービューにセーフエリアのパディングが適用されます。デフォルト:true。ほとんどのケースではデフォルト設定が適切です。 |
複数の言語を使用している場合は、ビルダーのローカライゼーションを追加する方法をご確認ください。
読み込みが完了したら、フローまたはペイウォールを表示してください。
デフォルトオーディエンス向けのフローまたはペイウォールを取得して高速化する
通常、フローやペイウォールはほぼ瞬時に取得されるため、速度を気にする必要はありません。ただし、オーディエンスやプレースメントが多数あり、ユーザーのインターネット接続が不安定な場合は、フローやペイウォールの取得に想定以上の時間がかかることがあります。そのような状況では、何も表示しないよりも、デフォルトのフローまたはペイウォールを表示することでスムーズなユーザー体験を確保したい場合があります。
この問題に対処するために、GetFlowForDefaultAudience メソッドを使用できます。このメソッドは、指定されたプレースメントの All Users オーディエンス向けのフローまたはペイウォールを取得します。ただし、推奨されるアプローチは GetFlow メソッドでフローまたはペイウォールを取得することであり、その詳細は上記のフロー/ペイウォールの取得セクションを参照してください。
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 | デフォルトでは、SDK はサーバーからデータを読み込もうとし、失敗した場合はキャッシュされたデータを返します。ユーザーが常に最新のデータを受け取れるため、このオプションを推奨します。 ただし、ユーザーが不安定なインターネット環境にいると想定される場合は、 キャッシュはアプリを再起動しても保持され、アプリの再インストールまたは手動でのクリーンアップを行った場合にのみ削除されます。 |
アセットのカスタマイズ
フローまたはペイウォール内の画像や動画をカスタマイズするには、カスタムアセットを実装します。
ヒーロー画像と動画には、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
});アセットが見つからない場合や読み込みに失敗した場合、フローまたはペイウォールはビルダーで設定されたデフォルトの外観にフォールバックします。
カスタムタイマーの設定
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 ダッシュボードの新しいペイウォールビルダーでペイウォールのビジュアルデザインを作成したら、モバイルアプリ上に表示できます。このプロセスの最初のステップは、以下に説明するように、プレースメントに関連付けられたペイウォールとそのビュー設定を取得することです。
新しいペイウォールビルダーは Unity SDK バージョン 3.3.0 以降が必要です。
ペイウォールビルダーでカスタマイズされたペイウォールに関するトピックです。ペイウォールを手動で実装する場合は、リモートコンフィグペイウォールのペイウォールとプロダクトをモバイルアプリで取得するトピックをご参照ください。
Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリをご覧ください。
モバイルアプリでペイウォールの表示を始める前に(クリックして展開)
- Adapty ダッシュボードでプロダクトを作成します。
- Adapty ダッシュボードでペイウォールを作成し、プロダクトを追加します。
- Adapty ダッシュボードでプレースメントを作成し、ペイウォールを追加します。
- モバイルアプリに 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 | 任意 デフォルト: | ペイウォールのローカライズの識別子。マイナス(-)文字で区切られた1つまたは2つのサブタグからなる言語コードを指定します。最初のサブタグは言語、2番目は地域を表します。 例: ロケールコードと推奨される使用方法については、ローカライズとロケールコードを参照してください。 |
| fetchPolicy | デフォルト: .reloadRevalidatingCacheData | デフォルトでは、SDKはサーバーからデータの読み込みを試み、失敗した場合はキャッシュされたデータを返します。ユーザーが常に最新のデータを取得できるため、このオプションを推奨します。 ただし、ユーザーの接続が不安定な場合は、 キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動クリーンアップ時にのみクリアされます。 Adapty SDK はペイウォールをローカルに2層で保存します:上述の定期更新キャッシュとフォールバックペイウォールです。また、CDNを使用してペイウォールをより高速に取得し、CDNが利用できない場合のためにスタンドアロンのフォールバックサーバーも用意しています。このシステムは、インターネット接続が不安定な場合でも常に最新バージョンのペイウォールを取得できるよう設計されています。 |
| loadTimeout | デフォルト: 5秒 | このメソッドのタイムアウトを制限する値です。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。 内部で複数のリクエストが発生する場合があるため、まれに |
レスポンスパラメーター:
| パラメーター | 説明 |
|---|---|
| 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_image と hero_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_NY と CUSTOM_TIMER_6H は Adapty ダッシュボードで設定した開発者定義タイマーの Timer ID です。タイマーリゾルバーにより、アプリは各タイマーを正しい値で動的に更新します。例えば:
CUSTOM_TIMER_NY:元旦などのタイマー終了までの残り時間。CUSTOM_TIMER_6H:ユーザーがペイウォールを開いてから始まる6時間の残り時間。
デフォルトオーディエンスのペイウォールでペイウォール取得を高速化する
通常、ペイウォールはほぼ即座に取得されるため、このプロセスを高速化することを心配する必要はありません。ただし、オーディエンスやペイウォールが多数あり、ユーザーのインターネット接続が弱い場合、ペイウォールの取得に想定より時間がかかることがあります。そのような場合、ペイウォールをまったく表示しないよりも、デフォルトのペイウォールを表示してスムーズなユーザー体験を確保したいことがあります。
これを解決するには、GetPaywallForDefaultAudience メソッドを使用できます。このメソッドは、指定されたプレースメントの All Users オーディエンス向けのペイウォールを取得します。ただし、推奨されるアプローチは、上記のペイウォールの取得セクションで説明されている getPaywall メソッドを使用してペイウォールを取得することである点を理解しておくことが重要です。
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 | 任意 デフォルト: | ペイウォールのローカライズ識別子です。このパラメーターは、マイナス(-)文字で区切られた1つまたは2つのサブタグで構成される言語コードです。最初のサブタグは言語、2番目はリージョンを表します。 例: |
| fetchPolicy | デフォルト: .reloadRevalidatingCacheData | デフォルトでは、SDKはサーバーからデータを読み込もうとし、失敗した場合はキャッシュされたデータを返します。このオプションはユーザーが常に最新のデータを取得できるため、推奨しています。 ただし、ユーザーが不安定なインターネット環境にある場合は、 キャッシュはアプリを再起動しても保持され、アプリのアンインストール時または手動でクリアした場合のみ削除されます。 Adapty SDK はペイウォールをローカルに2層で保存します。上記の定期更新キャッシュとフォールバックペイウォールです。また、ペイウォールの取得を高速化するためにCDNを使用し、CDNに到達できない場合に備えてスタンドアロンのフォールバックサーバーも用意しています。このシステムは、インターネット接続が不安定な場合でも、常に最新バージョンのペイウォールを確実に取得できるよう設計されています。 |