フローとペイウォールの取得 - Android
getFlow で取得される内容 フローのデザインが完了したら、モバイルアプリ上に表示できます。最初のステップは、プレースメントに紐づいたフローまたはペイウォールと、そのビュー設定を以下のように取得することです。
Adapty SDK がモバイルアプリにどのように組み込まれているか、実際の例を見たいですか?ペイウォールの表示、購入処理、その他の基本的な機能を含むフルセットアップを示したサンプルアプリをご覧ください。
始める前に
以下が必要です:
- Adapty ダッシュボードのプロダクト: プロダクトを作成する。
- プロダクトが設定されたフロー: フロー & ペイウォールビルダーでビルドし、プロダクトを割り当てる。
- プレースメント: プレースメントを作成し、フローを割り当てる。
- Adapty SDK のインストール: Android SDK インストールガイドを参照。
フローまたはペイウォールの取得
ビルダーでフローまたはペイウォールをデザインした場合、ユーザーに表示するためにモバイルアプリのコードでレンダリングを心配する必要はありません。そのようなフローまたはペイウォールには、表示内容と表示方法の両方が含まれています。それでも、プレースメントを通じてIDを取得し、ビュー設定を取得してから、モバイルアプリで表示する必要があります。
最適なパフォーマンスを確保するために、フローまたはペイウォールとビュー設定をできるだけ早く取得し、ユーザーに表示する前に画像をダウンロードする十分な時間を確保することが重要です。
複数のプレースメントを一度にウォームアップするには、preloadFlows(Android SDK 4.1+)を呼び出してください。プレースメントのJSONのみをキャッシュするため、レイアウトと画像を取得するにはビュー設定を別途フェッチする必要があります。
フローまたはペイウォールを取得するには、getFlow メソッドを使用してください。
The input is empty — there is no content to translate.
| パラメーター | 必須/任意 | 説明 |
|---|---|---|
| placementId | 必須 | 取得したいプレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| fetchPolicy | デフォルト: AdaptyPlacementFetchPolicy.Default |
ただし、ユーザーがインターネット接続が不安定な環境にいると考えられる場合は、 3 つ目のポリシー キャッシュはアプリの再起動後も保持され、アプリの再インストールまたは手動クリーンアップ時にのみクリアされます。 Adapty SDK はフローとペイウォールをローカルに 2 つのレイヤーで保存します。上記の定期的に更新されるキャッシュとフォールバックペイウォールです。また、CDN を使用して高速にフェッチし、CDN が利用できない場合に備えてスタンドアロンのフォールバックサーバーも使用しています。このシステムは、インターネット接続が乏しい場合でも信頼性を確保しながら、常に最新バージョンを取得できるよう設計されています。 |
| loadTimeout | デフォルト: 5 秒 | このメソッドのタイムアウト上限を設定します。タイムアウトに達した場合、キャッシュデータまたはローカルフォールバックが返されます。 処理が内部的に複数のリクエストで構成される場合があるため、まれに Android の場合: 拡張関数(例: |
レスポンスパラメーター:
| パラメーター | 説明 |
|---|---|
| Flow | プレースメント、識別子(id、variationId)、バリアント名(variationName、省略可能、SDK 4.2+)、名前、ペイウォールのバリアント一覧(paywalls)、リモートコンフィグ、およびフローにビュー設定が含まれるかどうかを示す hasViewConfiguration フラグを持つ AdaptyFlow オブジェクトです。プロダクトを事前読み込み、カスタム UI、またはプログラムによるチェックのために取得するには、getPaywallProducts(flow) を呼び出してください。 |
ビュー設定の取得
フローまたはペイウォールを取得したら、flow.hasViewConfiguration を使ってビュー設定が含まれているかどうかを確認します。このフラグは、Adapty ダッシュボードでプレースメントがどのように設計されているかを示します。
true— プレースメントは Flow & Paywall Builder(フロー)または 旧ペイウォールビルダー(ペイウォール)で作成されています。Adapty が UI をレンダリングします。以下の手順に進み、ビュー設定を取得してフローまたはペイウォールを表示してください。false— プレースメントはビルダー UI を持たないカスタムペイウォールです。リモートコンフィグペイウォールとして処理してください。
フローを公開してください。編集が未公開のフローは Dirty ステータスとなり、そのプレースメントは最後に公開されたバージョンを引き続き提供します。
複数の言語を使用している場合は、ビルダーのローカライゼーションの追加方法と、ロケールコードの正しい使用方法をこちらでご確認ください。
読み込みが完了したら、フローまたはペイウォールを表示します。
デフォルトオーディエンス向けのフローまたはペイウォールを素早く取得する
通常、フローやペイウォールはほぼ瞬時に取得されるため、速度を意識する必要はありません。ただし、オーディエンスやプレースメントの数が多く、ユーザーのインターネット接続が不安定な場合、取得に想定以上の時間がかかることがあります。そのような状況では、何も表示しないよりも、デフォルトのフローまたはペイウォールを表示してスムーズなユーザー体験を提供したい場合があります。
これに対応するには、getFlowForDefaultAudience メソッドを使用できます。このメソッドは、指定されたプレースメントの All Users オーディエンス向けのフローまたはペイウォールを取得します。ただし、推奨されるアプローチは上記の フロー/ペイウォールを取得する セクションで説明した getFlow メソッドでフローまたはペイウォールを取得する方法であることを理解しておくことが重要です。
getFlow を推奨する理由
getFlowForDefaultAudience メソッドにはいくつかの重大な欠点があります:
- 後方互換性の問題: 異なるアプリバージョン(現行バージョンと将来のバージョン)で異なるフローを表示する必要がある場合、課題が生じる可能性があります。現行(レガシー)バージョンに対応したフローを設計するか、現行(レガシー)バージョンのユーザーがフローを正しくレンダリングできない問題を受け入れるかのどちらかを選択する必要があります。
- ターゲティングの喪失: すべてのユーザーが All Users オーディエンス向けに設計された同一のフローを見ることになるため、パーソナライズされたターゲティング(国、マーケティングアトリビューション、独自のカスタム属性に基づくものを含む)が失われます。
対応するデメリットを許容してでもフローやペイウォールの取得を高速化したい場合は、以下のように getFlowForDefaultAudience メソッドを使用してください。そうでない場合は、上記で説明した getFlow を使用してください。
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| placementId | 必須 | プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| fetchPolicy | デフォルト: AdaptyPlacementFetchPolicy.Default |
ただし、ユーザーが不安定なインターネット環境を使用していると考えられる場合は、 3つ目のポリシーである なお、キャッシュはアプリを再起動しても保持され、アプリを再インストールするか手動でクリアした場合にのみ削除されます。 |
アセットのカスタマイズ
フローやペイウォールの画像・動画をカスタマイズするには、カスタムアセットを実装します。
ヒーロー画像と動画には事前定義済みのIDがあり、それぞれ hero_image と hero_video です。カスタムアセットバンドルでは、これらのIDを使って各要素を指定し、動作をカスタマイズします。
その他の画像・動画については、Adapty ダッシュボードでカスタムIDを設定する必要があります。
たとえば、次のようなことができます:
- 一部のユーザーに別の画像や動画を表示する。
- リモートのメイン画像の読み込み中にローカルのプレビュー画像を表示する。
- 動画の再生前にプレビュー画像を表示する。
- アプリにバンドルされたメディアを表示し、最初の画面をダウンロードなしで描画する。アプリバンドルからの最初の画面のメディアを表示するを参照してください。
以下は、シンプルなディクショナリーを使ってカスタムアセットを提供する例です。
val customAssets = AdaptyCustomAssets.of(
"hero_image" to
AdaptyCustomImageAsset.remote(
url = "https://example.com/image.jpg",
preview = AdaptyCustomImageAsset.file(
FileLocation.fromAsset("images/hero_image_preview.png"),
)
),
"hero_video" to
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
),
)
val flowView = AdaptyUI.getFlowView(
activity,
flowConfiguration,
products,
eventListener,
insets,
customAssets,
)アセットが見つからない場合、フローはデフォルトの外観にフォールバックします。
動画の場合、オプションで resolution を渡すことで、動画の読み込み前にレイアウトスペースを確保し、アスペクト比(width / height)を設定できます:
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
resolution = AdaptyCustomVideoAsset.Resolution(width = 1080, height = 1920),
)Adapty ダッシュボードの旧ペイウォールビルダーでペイウォールのビジュアル部分をデザインした後、モバイルアプリにそれを表示できます。このプロセスの最初のステップは、以下で説明するように、プレースメントに関連付けられたペイウォールとそのビュー設定を取得することです。
SDK 3.x のペイウォールビルダーで作成されたペイウォールには、Android SDK バージョン 3.0 以上が必要です。
Paywall Builderでカスタマイズされたペイウォールについての説明です。ペイウォールを手動で実装する場合は、リモートコンフィグペイウォール用のペイウォールとプロダクトの取得を参照してください。
Adapty SDK がモバイルアプリにどのように組み込まれているか、実際の例を見たいですか?ペイウォールの表示、購入処理、その他の基本的な機能を含むフルセットアップを示したサンプルアプリをご覧ください。
モバイルアプリでペイウォールの表示を始める前に(クリックして展開)
- Adapty ダッシュボードでプロダクトを作成する。
- Adapty ダッシュボードでペイウォールを作成し、プロダクトを追加する。
- Adapty ダッシュボードでプレースメントを作成し、ペイウォールを追加する。
- モバイルアプリに Adapty SDK をインストールする。
ペイウォールビルダーで作成したペイウォールを取得する
ペイウォールビルダーでペイウォールを作成した場合、ユーザーに表示するためにモバイルアプリのコードでレンダリングを実装する必要はありません。このようなペイウォールには、表示する内容と表示方法の両方が含まれています。ただし、プレースメントを通じてペイウォールの ID を取得し、ビュー設定を行ったうえで、モバイルアプリに表示する必要があります。
最適なパフォーマンスを確保するには、ペイウォールとそのビュー設定をできるだけ早く取得し、ユーザーに表示する前に画像のダウンロードに十分な時間を確保することが重要です。
ペイウォールを取得するには、getPaywall メソッドを使用します:
パラメーター:
| パラメーター | 必須/任意 | 説明 |
|---|---|---|
| placementId | 必須 | 対象のプレースメントの識別子です。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| locale | 任意 デフォルト: | ペイウォールのローカライズ識別子です。マイナス(-)で区切られた1つまたは2つのサブタグからなる言語コードを指定します。最初のサブタグは言語、2番目は地域を表します。 例: ロケールコードと推奨される使い方については、ローカライズとロケールコードをご覧ください。 |
| fetchPolicy | デフォルト: AdaptyPlacementFetchPolicy.Default |
ただし、ユーザーが不安定なインターネット環境を使用していると思われる場合は、 3番目のポリシー キャッシュはアプリを再起動しても保持され、アプリのアンインストール時または手動でのクリーンアップ時にのみ削除されます。 Adapty SDK はペイウォールをローカルに2つのレイヤーで保存します。上述の定期更新キャッシュとフォールバックペイウォールです。また、ペイウォールをより高速に取得するためにCDNを使用し、CDNに到達できない場合に備えてスタンドアロンのフォールバックサーバーも用意しています。このシステムは、インターネット接続が限られている状況でも信頼性を確保しつつ、常に最新のペイウォールを取得できるよう設計されています。 |
| loadTimeout | デフォルト: 5秒 | このメソッドのタイムアウト上限を設定します。タイムアウトに達した場合は、キャッシュデータまたはローカルフォールバックが返されます。 なお、このメソッドは内部で複数のリクエストを処理する場合があるため、まれに Android の場合: |
レスポンスパラメータ:
| パラメータ | 説明 |
|---|---|
| Paywall | プロダクトIDのリスト、ペイウォール識別子、リモートコンフィグ、およびその他のいくつかのプロパティを含む AdaptyPaywall オブジェクト。 |
ペイウォールビルダーで作成したペイウォールのビュー設定を取得する
ペイウォールビルダーで Show on device トグルを必ず有効にしてください。このオプションがオンになっていない場合、ビュー設定を取得できません。
ペイウォールを取得したら、ViewConfiguration が含まれているかどうかを確認してください。これが含まれている場合、そのペイウォールはペイウォールビルダーで作成されたことを示します。ViewConfiguration が存在する場合はペイウォールビルダーのペイウォールとして処理し、存在しない場合はリモートコンフィグのペイウォールとして処理してください。
複数言語をサポートする場合は、ペイウォールにローカリゼーションを追加してください。使用するコードについては、ローカリゼーションとロケールコードを参照してください。
読み込みが完了したら、ペイウォールを表示してください。
デフォルトオーディエンス向けペイウォールを素早く取得する
通常、ペイウォールはほぼ瞬時に取得されるため、速度を気にする必要はありません。ただし、オーディエンスやペイウォールの数が多く、ユーザーのインターネット接続が不安定な場合、ペイウォールの取得に想定以上の時間がかかることがあります。そのような状況では、ペイウォールをまったく表示しないよりも、スムーズなユーザー体験を確保するためにデフォルトのペイウォールを表示したい場合があるでしょう。
これに対処するには、getPaywallForDefaultAudience メソッドを使用できます。このメソッドは、指定したプレースメントの All Users オーディエンス向けペイウォールを取得します。ただし、推奨されるアプローチは getPaywall メソッドによるペイウォールの取得であることを理解しておくことが重要です。詳細は上記のペイウォール情報の取得セクションをご参照ください。
getPaywall を推奨する理由
getPaywallForDefaultAudience メソッドにはいくつかの重大な欠点があります:
- 後方互換性の問題: 現在のバージョンと将来のバージョンで異なるペイウォールを表示する必要がある場合、課題が生じる可能性があります。現在の(レガシー)バージョンに対応したペイウォールを設計するか、現在の(レガシー)バージョンのユーザーがペイウォールを正常に表示できない問題を受け入れるかのどちらかになります。
- ターゲティングの喪失: すべてのユーザーが All Users オーディエンス向けに設計された同じペイウォールを見ることになり、国、マーケティングのアトリビューション、独自のカスタム属性に基づくパーソナライズされたターゲティングができなくなります。
ペイウォールの取得速度を優先してこれらのデメリットを許容できる場合は、以下のように getPaywallForDefaultAudience メソッドを使用してください。そうでない場合は、上記で説明した getPaywall を使用してください。
getPaywallForDefaultAudience メソッドは Android SDK 2.11.3 以降で利用可能です。
| パラメータ | 必須/任意 | 説明 |
|---|---|---|
| placementId | 必須 | プレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。 |
| locale | 任意 デフォルト: | ペイウォールのローカライズの識別子。このパラメータは、マイナス(-)文字で区切られた1つ以上のサブタグで構成される言語コードを指定します。最初のサブタグは言語、2番目は地域を表します。 例: ロケールコードの詳細および推奨する使用方法については、ローカライズとロケールコードをご覧ください。 |
| fetchPolicy | デフォルト: AdaptyPlacementFetchPolicy.Default |
ただし、ユーザーが不安定なインターネット環境にいると考えられる場合は、 3つ目のポリシー キャッシュはアプリを再起動しても保持され、アプリを再インストールするか手動でクリアした場合にのみ削除されます。 |
アセットのカスタマイズ
ペイウォール内の画像や動画をカスタマイズするには、カスタムアセットを実装します。
ヒーロー画像と動画には、あらかじめ定義されたID(hero_image と hero_video)があります。カスタムアセットバンドルでは、これらのIDを使って要素を指定し、動作をカスタマイズします。
その他の画像や動画については、Adapty ダッシュボードでカスタムIDを設定する必要があります。
たとえば、次のようなことができます:
- 一部のユーザーに別の画像や動画を表示する。
- リモートのメイン画像の読み込み中に、ローカルのプレビュー画像を表示する。
- 動画を再生する前にプレビュー画像を表示する。
この機能を使用するには、Adapty Android SDK をバージョン 3.7.0 以上にアップデートしてください。
カスタムアセットをシンプルな辞書で提供する方法の例を示します。
val customAssets = AdaptyCustomAssets.of(
"hero_image" to
AdaptyCustomImageAsset.remote(
url = "https://example.com/image.jpg",
preview = AdaptyCustomImageAsset.file(
FileLocation.fromAsset("images/hero_image_preview.png"),
)
),
"hero_video" to
AdaptyCustomVideoAsset.file(
FileLocation.fromResId(requireContext(), R.raw.custom_video),
preview = AdaptyCustomImageAsset.file(
FileLocation.fromResId(requireContext(), R.drawable.video_preview),
),
),
)
val paywallView = AdaptyUI.getPaywallView(
activity,
viewConfiguration,
products,
eventListener,
insets,
customAssets,
)アセットが見つからない場合、ペイウォールはデフォルトの外観にフォールバックします。