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

Adapty ダッシュボードの新しいペイウォールビルダーでペイウォールのビジュアル部分をデザインしたら、モバイルアプリにそれを表示できます。まず最初に、プレースメントに紐づくペイウォールとそのビュー設定を以下の手順で取得します。

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

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

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

モバイルアプリでペイウォールを表示する前に(クリックして展開)
  1. Adapty ダッシュボードでプロダクトを作成する。
  2. Adapty ダッシュボードでペイウォールを作成し、プロダクトを組み込む
  3. Adapty ダッシュボードでプレースメントを作成し、ペイウォールを組み込む
  4. モバイルアプリに Adapty SDK をインストールする。

ペイウォールビルダーでデザインしたペイウォールを取得する

ペイウォールビルダーでペイウォールをデザインした場合、モバイルアプリのコードでそれをレンダリングしてユーザーに表示する必要はありません。このようなペイウォールには、表示する内容と表示方法の両方が含まれています。ただし、プレースメントを通じてそのIDを取得し、ビュー設定を取得した上でモバイルアプリに表示する必要があります。

最適なパフォーマンスを確保するには、ペイウォールとそのビュー設定をできるだけ早く取得し、ユーザーに表示する前に画像のダウンロードが完了するよう十分な時間を確保することが重要です。

ペイウォールを取得するには、getPaywall メソッドを使用します。

パラメータ:

パラメータ必須/任意説明
placementId必須取得したいプレースメントの識別子。Adapty ダッシュボードでプレースメントを作成する際に指定した値です。
locale

任意

デフォルト: en

ペイウォールのローカライズの識別子。このパラメータは、マイナス(-)で区切られた 1 つまたは 2 つのサブタグで構成される言語コードです。最初のサブタグは言語、2 番目はリージョンを表します。

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

ロケールコードとその推奨される使用方法については、ローカライズとロケールコードをご参照ください。

fetchPolicyデフォルト: .reloadRevalidatingCacheData

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

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

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

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

loadTimeoutデフォルト: 5 秒

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

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

Android の場合:拡張関数(import com.adapty.utils.seconds.seconds など)を使って TimeInterval を作成するか、TimeInterval.seconds(5) を使用します。制限なしに設定するには TimeInterval.INFINITE を使用します。

レスポンスパラメータ:

パラメータ説明
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

任意

デフォルト: en

ペイウォールのローカライズの識別子。このパラメータは、マイナス(-)で区切られた 1 つ以上のサブタグで構成される言語コードです。最初のサブタグは言語、2 番目はリージョンを表します。

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

ロケールコードとその推奨される使用方法については、ローカライズとロケールコードをご参照ください。

fetchPolicyデフォルト: .reloadRevalidatingCacheData

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

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

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

アセットのカスタマイズ

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

ヒーロー画像と動画には定義済みの ID(hero_imagehero_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,
)

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