Skip to main content

Android - Present legacy Paywall Builder paywalls

If you've customized a paywall using the Paywall Builder, you don't need to worry about rendering it in your mobile app code to display it to the user. Such a paywall contains both what should be shown within the paywall and how it should be shown.

warning

This guide covers the process for legacy Paywall Builder paywalls only which requires SDK v2.x or earlier. The process for presenting paywalls differs for paywalls designed with different versions of Paywall Builde, remote config paywalls, and Observer mode.

In order to display the visual paywall on the device screen, you must first configure it. To do this, call the method AdaptyUI.getPaywallView() or create the AdaptyPaywallView directly:

   val paywallView = AdaptyUI.getPaywallView(
activity,
viewConfiguration,
products,
AdaptyPaywallInsets.of(topInset, bottomInset),
eventListener,
personalizedOfferResolver,
tagResolver,
)

//======= OR =======

val paywallView =
AdaptyPaywallView(activity) // or retrieve it from xml
...
with(paywallView) {
setEventListener(eventListener)
setObserverModeHandler(observerModeHandler)
showPaywall(
viewConfiguration,
products,
AdaptyPaywallInsets.of(topInset, bottomInset),
personalizedOfferResolver,
tagResolver,
)
}

After the view has been successfully created, you can add it to the view hierarchy and display it on the screen of the device.

If you get AdaptyPaywallView not by calling AdaptyUI.getPaywallView(), you will also need to call .setEventListener() and .showPaywall() methods.

Request parameters:

ParameterPresenceDescription
PaywallrequiredSpecify an AdaptyPaywall object, for which you are trying to get a screen representation.
ProductsoptionalProvide an array of AdaptyPaywallProduct to optimize the display timing of products on the screen. If null is passed, AdaptyUI will automatically fetch the required products.
ViewConfigurationrequiredSupply an AdaptyViewConfiguration object containing visual details of the paywall. Use the Adapty.getViewConfiguration(paywall) method to load it. Refer to Fetch the visual configuration of paywall topic for more details.
InsetsrequiredDefine an AdaptyPaywallInsets object containing information about the area overlapped by system bars, creating vertical margins for content. If neither the status bar nor the navigation bar overlaps the AdaptyPaywallView, pass AdaptyPaywallInsets.NONE. For fullscreen mode where system bars overlap part of your UI, obtain insets as shown under the table.
EventListeneroptionalProvide an AdaptyUiEventListener to observe paywall events. Extending AdaptyUiDefaultEventListener is recommended for ease of use. Refer to Handling paywall events topic for more details.
PersonalizedOfferResolveroptionalTo indicate personalized pricing (read more ), implement AdaptyUiPersonalizedOfferResolver and pass your own logic that maps AdaptyPaywallProduct to true if the product's price is personalized, otherwise false.
TagResolveroptionalUse AdaptyUiTagResolver to resolve custom tags within the paywall text. This resolver takes a tag parameter and resolves it to a corresponding string. Refer to Custom tags in paywall builder topic for more details.

For fullscreen mode where system bars overlap part of your UI, obtain insets in the following way:

import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

//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.of(insets.top, insets.bottom)
paywallView.showPaywall(paywall, products, viewConfig, paywallInsets, productTitleResolver)
}

Returns:

ObjectDescription
AdaptyPaywallViewobject, representing the requested paywall screen.

Next step: