For AppLovin Exchange demand, the maximum numbers of characters allowed for Title, Description, and CTA are as follows:
| Asset | Maximum character count |
|---|---|
| Title | 50 characters |
| Description | 150 characters. You can add an ellipsis (…) after 149 characters, as the 150th character. |
| CTA | 15 characters |
For SDK-mediated networks, the network sets the maximum character counts.
The following code snippet demonstrates how to get the media content aspect ratio of your native ad:
You can access and render the star rating for the advertised app. This value, when available, is a floating point number in the range of [0.0, 5.0].
The MAX SDK automatically renders the stars in the container view that you designate as the star rating container. If the network does not provide the star rating, or if the star rating is < 3, the SDK does not fill the star rating container view. You are responsible for adjusting your layout accordingly.
To retrieve the star rating for the current ad:
Ad Placer automatically inserts native ads into your existing content stream using RecyclerView.
To integrate this API, take the following high-level steps:
This page explains these steps in greater detail below.
To accord with AppLovin’s policy, your ad must contain the Privacy Information icon.
This icon links to an important privacy notice.
You can bind to it via MaxNativeAdViewBinder.Builder#setOptionsContentViewGroupId(…).
Ad placer supports manual native ad layouts. See the “Manual” section of this page to learn how to configure such ad layouts. See Configure ad rendering settings below to learn how to configure the ad placer to support your layout.
Create a MaxAdPlacerSettings object with your ad unit identifier.
This object configures your ad placer and provides positioning information for ads in your feed.
Ad placer positions ads in your feed. It does this based on at least one of the following:
Configure ad positions by modifying MaxAdPlacerSettings:
You can further configure your ad placer by adjusting these settings in MaxAdPlacerSettings:
maxAdCount
: Set this to the maximum number of ads in a stream (default=256).
If a stream contains multiple sections, this determines the maximum number of ads per ad section.
maxPreloadedAdCount
: Set this to the maximum number of ads to preload for placement in a stream (default=4).
Choose one of these two options when you configure your ad placer:
RecyclerView, use MaxRecyclerAdapter.
The helper class wraps the original adapter.
It automatically renders and inserts ads into the feed.
You can access the underlying ad placer by calling getAdPlacer().MaxAdPlacer.
You may want to do this, for example, if your feed uses some other custom UI componentTo configure your ad placer with MaxRecyclerAdapter follow these instructions:
MaxRecyclerAdapter with your settings, original adapter, and activity:MaxRecyclerAdapter:notifyItemInserted()notifyItemRemoved()notifyItemsInserted()notifyItemsRemoved()MaxRecyclerAdapter instead.
This way, they receive the adjusted position of content items after ad insertion.adAdapter.getOriginalPosition().loadAds() to start loading ads:The following code shows how you load ads into a recycler view by using MaxRecyclerAdapter:
Call setNativeAdViewBinder on the ad placer before you load ads.
Always set the ad size.
This optimizes rendering.
The ad placer supports an optional listener that notifies you of events:
onAdLoaded()onAdRemoved()onAdClicked()onAdRevenuePaid()Native ads let you monetize your app in a way that’s consistent with its existing design. The AppLovin MAX SDK gives you access to an ad’s individual assets. This way, you can design the ad layout to be consistent with the look and feel of your app. The SDK automatically caches images and tracks metrics. You can focus on how, when, and where to display ads.
Use this API if you have custom views and you want to manually load native ad assets into those views. This integration method involves three high-level steps:
To use the manual API, select Manual in the Create New Ad Unit screen:

You can bind custom UI components to the MAX SDK. Then you can render native ad assets into those components. The example below demonstrates this with custom views that you create with the Layout Editor and unique view IDs. You can also use this method if you create your views programmatically.
To accord with AppLovin’s policy, your ad must contain the Privacy Information icon.
This icon links to an important privacy notice.
You can bind to it via MaxNativeAdViewBinder.Builder#setOptionsContentViewGroupId(…).
[COMPONENT: ImageView]
[COMPONENT: LinearLayout]
[COMPONENT: TextView]
[COMPONENT: FrameLayout]
[COMPONENT: TextView]
[COMPONENT: TextView]
[COMPONENT: FrameLayout]
[COMPONENT: Button]
</androidx.constraintlayout.widget.ConstraintLayout>
To load a pre-rendered native ad, first instantiate a MaxNativeAdLoader corresponding to your Ad Unit ID.
Then call its loadAd(MaxNativeAdView) method.
Implement and set the MaxNativeAdLoadListener so that you are notified when your native ad’s load state changes.
To load a native ad, first instantiate a MaxNativeAdLoader corresponding to your Ad Unit ID.
Then call its loadAd() method.
Implement and set the MaxNativeAdLoadListener so that you are notified when your native ad’s load state changes.
Then use the MaxAd returned in onNativeAdLoaded to render the ad view.
You can do this by calling MaxNativeAdLoader.render(MaxNativeAdView, MaxAd).
If you stop using a native ad, destroy its resources by calling the destroy() method.
If you do not, the performance of your app degrades over time.
Below is an example of how you load and destroy a native ad.
This takes place after you have bound the UI components from the previous step.
AppLovin recommends that you incorporate as many of the native elements as are appropriate in the context of what the rest of your app looks like. These may include the Title and Media View or Icon. If you give the user more information, this helps them decide whether they want to click the ad.
Some networks do not provide media content aspect ratios. For those networks, the value is zero.
Follow each network’s guidance and bind their required ad assets. Otherwise they may invalidate your impressions.
settings.addFixedPosition( 3 );
settings.addFixedPosition( 3 )
settings.resetFixedPositions();
settings.resetFixedPositions()
settings.setRepeatingInterval( 5 );
settings.repeatingInterval = 5
adAdapter = new MaxRecyclerAdapter( settings, adapter, this );
adAdapter = MaxRecyclerAdapter(settings, adapter, this)
recyclerView.setAdapter( adAdapter );
recyclerView.adapter = adAdapter
adAdapter.loadAds();
adAdapter.loadAds()
AppLovin deprecated templates integration. If you integrate native ads into your app via templates, those ads will start no-filling at . AppLovin will remove support for templates integration in an upcoming SDK release.
Follow each network’s guidance and bind their required ad assets. Otherwise, they may invalidate your impressions.
Native ads are expected to be shown in the ad expiration window of four hours. Impressions associated with ads that show outside of this window are invalidated.