Android - 新しいペイウォールビルダーのペイウォールを表示する ペイウォールビルダーを使ってペイウォールをカスタマイズした場合、ユーザーに表示するためのレンダリングコードをモバイルアプリに書く必要はありません。このようなペイウォールには、表示内容と表示方法の両方が含まれています。
このガイドは、SDK v3.0 が必要な新しいペイウォールビルダーのペイウォール 専用です。ペイウォールの表示方法は、異なるバージョンのペイウォールビルダーで設計されたペイウォール、リモートコンフィグペイウォール、Observer モード によって異なります。
以下で使用する viewConfiguration オブジェクトの取得方法については、ペイウォールビルダーのペイウォールと設定を取得する をご覧ください。
デバイス画面にビジュアルペイウォールを表示するには、まず設定が必要です。AdaptyUI.getPaywallView() メソッドを呼び出すか、AdaptyPaywallView を直接作成してください:
val paywallView = AdaptyUI. getPaywallView (
activity,
viewConfiguration,
products,
eventListener,
insets,
personalizedOfferResolver,
tagResolver,
timerResolver,
) val paywallView =
AdaptyPaywallView (activity) // or retrieve it from xml
.. .
with (paywallView) {
showPaywall (
viewConfiguration,
products,
eventListener,
insets,
personalizedOfferResolver,
tagResolver,
timerResolver,
)
} AdaptyPaywallView paywallView = AdaptyUI. getPaywallView (
activity,
viewConfiguration,
products,
eventListener,
insets,
personalizedOfferResolver,
tagResolver,
timerResolver
); AdaptyPaywallView paywallView =
new AdaptyPaywallView (activity); //add to the view hierarchy if needed, or you receive it from xml
...
paywallView. showPaywall (viewConfiguration, products, eventListener, insets, personalizedOfferResolver, tagResolver, timerResolver); < com.adapty.ui.AdaptyPaywallView xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent" /> ビューが正常に作成されたら、ビュー階層に追加してデバイス画面に表示できます。
AdaptyUI.getPaywallView() を呼び出さずに AdaptyPaywallView を取得した場合は、.showPaywall() メソッドも呼び出す必要があります。
デバイス画面にビジュアルペイウォールを表示するには、まず設定が必要です。次のコンポーザブル関数を使用してください:
AdaptyPaywallScreen (
viewConfiguration,
products,
eventListener,
insets,
personalizedOfferResolver,
tagResolver,
timerResolver,
)
リクエストパラメータ:
パラメータ 必須/任意 説明 viewConfiguration 必須 ペイウォールのビジュアル詳細を含む AdaptyUI.LocalizedViewConfiguration オブジェクトを指定します。Adapty.getViewConfiguration(paywall) メソッドで読み込んでください。詳細はペイウォールのビジュアル設定を取得する をご覧ください。 products 任意 画面上のプロダクト表示タイミングを最適化するために AdaptyPaywallProduct の配列を指定します。null を渡すと、AdaptyUI が必要なプロダクトを自動的に取得します。 eventListener 任意 ペイウォールイベントを監視するために AdaptyUiEventListener を指定します。使いやすさのために AdaptyUiDefaultEventListener の拡張を推奨します。詳細はペイウォールイベントの処理 をご覧ください。 insets 任意 インセットは、システムバーの後ろにタップ可能な要素が隠れないようにするためのペイウォール周囲のスペースです。
デフォルト: UNSPECIFIED(Adapty がインセットを自動調整します。エッジ・ツー・エッジのペイウォールに適しています)
ペイウォールがエッジ・ツー・エッジでない場合は、カスタムインセットを設定することをお勧めします。設定方法は下記のペイウォールインセットの変更 セクションをご覧ください。
personalizedOfferResolver 任意 パーソナライズされた価格設定(詳細はこちら )を指定するには、AdaptyUiPersonalizedOfferResolver を実装し、AdaptyPaywallProduct が個人化された価格かどうかを true/false で返す独自のロジックを渡してください。 tagResolver 任意 ペイウォールテキスト内のカスタムタグを解決するために AdaptyUiTagResolver を使用します。このリゾルバーはタグパラメータを受け取り、対応する文字列に解決します。詳細はペイウォールビルダーのカスタムタグのトピックをご覧ください。 timerResolver 任意 カスタムタイマー機能を使用する場合は、ここにリゾルバーを渡してください。
Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリ をご覧ください。
ペイウォールインセットの変更
インセットは、システムバーの後ろにタップ可能な要素が隠れないようにするためのペイウォール周囲のスペースです。デフォルトでは、Adapty がインセットを自動調整します。これはエッジ・ツー・エッジのペイウォールに適しています。
ペイウォールがエッジ・ツー・エッジでない場合は、カスタムインセットの設定をお勧めします:
ステータスバーとナビゲーションバーのどちらも AdaptyPaywallView と重なっていない場合は AdaptyPaywallInsets.NONE を使用してください。
ペイウォールが上部のステータスバーとは重なっているが下部とは重なっていない場合など、より詳細な設定が必要な場合は、以下の例のように bottomInset のみを 0 に設定できます:
//create extension function
fun View . onReceiveSystemBarsInsets (action: ( insets : Insets ) -> Unit ) {
ViewCompat. setOnApplyWindowInsetsListener ( this ) { _, insets ->
val systemBarInsets = insets. getInsets (WindowInsetsCompat.Type. systemBars ())
ViewCompat. setOnApplyWindowInsetsListener ( this , null )
action (systemBarInsets)
insets
}
}
//and then use it with the view
paywallView. onReceiveSystemBarsInsets { insets ->
val paywallInsets = AdaptyPaywallInsets. vertical (insets.top, 0 )
paywallView. showPaywall (
viewConfiguration,
products,
eventListener,
paywallInsets,
personalizedOfferResolver,
tagResolver,
timerResolver,
)
}
...
ViewCompat. setOnApplyWindowInsetsListener (paywallView, (view, insets) -> {
Insets systemBarInsets = insets. getInsets (WindowInsetsCompat.Type. systemBars ());
ViewCompat. setOnApplyWindowInsetsListener (paywallView, null );
AdaptyPaywallInsets paywallInsets =
AdaptyPaywallInsets. of (systemBarInsets.top, 0 );
paywallView. showPaywall (paywall, products, viewConfiguration, paywallInsets, productTitleResolver);
return insets;
});
開発者定義タイマーの使用
モバイルアプリで開発者定義タイマーを使用するには、カスタムタイマーとペイウォールのレンダリング時に置き換えられる文字列値をペアにしたディクショナリまたはマップである timerResolver オブジェクトを作成します。以下に例を示します:
.. .
val customTimers = mapOf (
"CUSTOM_TIMER_NY" to Calendar. getInstance (TimeZone. getDefault ()). apply { set ( 2025 , 0 , 1 ) }.time, // New Year 2025
)
val timerResolver = AdaptyUiTimerResolver { timerId ->
customTimers. getOrElse (timerId, { Date (System. currentTimeMillis () + 3600 * 1000L ) /* in 1 hour */ } )
}
...
Map< String , Date > customTimers = new HashMap<>();
customTimers. put (
"CUSTOM_TIMER_NY" ,
new Calendar. Builder (). setTimeZone (TimeZone. getDefault ()). setDate ( 2025 , 0 , 1 ). build (). getTime ()
);
AdaptyUiTimerResolver timerResolver = new AdaptyUiTimerResolver () {
@ NonNull
@ Override
public Date timerEndAtDate (@ NonNull String timerId ) {
Date date = customTimers. get (timerId);
return date != null ? date : new Date (System. currentTimeMillis () + 3600 * 1000L ); /* in 1 hour */
}
};
この例では、CUSTOM_TIMER_NY は Adapty ダッシュボードで設定した開発者定義タイマーの Timer ID です。timerResolver により、アプリはタイマーの終了時刻(元日など)から現在時刻を引いて計算した 13d 09h 03m 34s のような正確な値でタイマーを動的に更新します。
モバイルアプリでカスタムタグを使用するには、カスタムタグとペイウォールのレンダリング時に置き換えられる文字列値をペアにしたディクショナリまたはマップである tagResolver オブジェクトを作成します。以下に例を示します:
val customTags = mapOf ( "USERNAME" to "John" )
val tagResolver = AdaptyUiTagResolver { tag -> customTags[tag] } Map< String , String > customTags = new HashMap<>();
customTags. put ( "USERNAME" , "John" );
AdaptyUiTagResolver tagResolver = customTags :: get;
この例では、USERNAME は Adapty ダッシュボードで <USERNAME/> として入力したカスタムタグです。tagResolver により、アプリはこのカスタムタグを John のような指定された値に動的に置き換えます。
tagResolver はペイウォールを表示する直前に作成・設定することをお勧めします。準備ができたら、ペイウォール表示に使用する AdaptyUI メソッドに渡してください。
ペイウォールのローディングインジケーターの色を変更する
ローディングインジケーターのデフォルトカラーは、次の方法でオーバーライドできます:
< style name = "AppTheme" parent = "android:Theme.Material.Light.NoActionBar" >
< item name = "adapty_progressIndicatorColor" >@color/yourColor</ item >
</ style >