MAX Custom Integration Features

  • Updated

MAX is a lightweight solution for ad monetization with automated features that increase ad revenue and ad availability for improved user experience.

To support advanced implementations of MAX with custom functionalities, AppLovin added support for several public APIs. This page describes the functionality, best practices, and how to implement based on the developer use case.

AppLovin recommends that you work directly with your account teams and the dedicated solution engineers find the optimal solution that will meet your needs before you implement these features. The following advanced features are available as of version 11 of the AppLovin SDK:

Sequential Caching for All Ad Formats

MAX supports sequential caching. Once MAX loads the initial ad successfully, MAX initiates a new ad request to ensure that you have at least one ad in cache.

This is a critical performance enhancement for publishers who leverage sophisticated and deep waterfall strategies. It is a crucial feature for rewarded video placements where the user is allowed to watch ads back to back.

The following code shows you how to disable sequential caching of interstitials and rewarded video ad formats:

  • // Interstitial Ad
    MaxSdk.SetExtraParameter("disable_b2b_ad_unit_ids", "ad-unit-id-1, ad-unit-id-2");
    
    // Rewarded Ad
    MaxSdk.SetExtraParameter("disable_b2b_ad_unit_ids", "ad-unit-id-1, ad-unit-id-2");
  • //Interstitial Ad
    AppLovinSdkSettings sdkSettings = AppLovinSdk.getInstance( this ).getSettings;
    sdkSettings.setExtraParameter( "disable_b2b_ad_unit_ids", "ad-unit-id-1, ad-unit-id-2" );
    
    // Rewarded Ad
    AppLovinSdkSettings sdkSettings = AppLovinSdk.getInstance( this ).getSettings;
    sdkSettings.setExtraParameter( "disable_b2b_ad_unit_ids", "ad-unit-id-1, ad-unit-id-2" );
  • // Interstitial Ad
    val sdkSettings = AppLovinSdk.getInstance( this ).settings
    sdkSettings.setExtraParameter( "disable_b2b_ad_unit_ids", "ad-unit-id-1, ad-unit-id-2" )
    
    // Rewarded Ad
    val sdkSettings = AppLovinSdk.getInstance( this ).settings
    sdkSettings.setExtraParameter( "disable_b2b_ad_unit_ids", "ad-unit-id-1, ad-unit-id-2" )
  • // Interstitial Ad
    ALSdkSettings *sdkSettings = [ALSdk shared].settings;
    [sdkSettings setExtraParameterForKey:@"disable_b2b_ad_unit_ids" value:@"ad-unit-id-1, ad-unit-id-2"];
    
    // Rewarded Ad
    ALSdkSettings *sdkSettings = [ALSdk shared].settings;
    [sdkSettings setExtraParameterForKey:@"disable_b2b_ad_unit_ids" value:@"ad-unit-id-1, ad-unit-id-2"];
  • // Interstitial Ad
    let sdkSettings = ALSdk.shared()?.settings
    sdkSettings?.setExtraParameterForKey("disable_b2b_ad_unit_ids", value: "ad-unit-id-1, ad-unit-id-2")
    
    // Rewarded Ad
    let sdkSettings = ALSdk.shared()?.settings
    sdkSettings?.settings.setExtraParameterForKey("disable_b2b_ad_unit_ids", value: "YOUR_AD_UNIT_ID1, YOUR_AD_UNIT_ID2")

The following code shows you how to disable sequential caching of banners / MRECs:

  • MaxSdk.SetBannerExtraParameter("ad-unit-id", "disable_precache", "true");
  • adView = new MaxAdView( "ad-unit-id", this );
    adView.setExtraParameter( "disable_precache", "true" );
  • var adView = MaxAdView( "ad-unit-id", this )
    adView.setExtraParameter( "disable_precache", "true" )
  • self.adView = [[MAAdView alloc] initWithAdUnitIdentifier: @”ad-unit-id"];
    [self.adView setExtraParameterForKey:@"disable_precache" value:@"true"];
  • let adView = MAAdView(adUnitIdentifier: "ad-unit-id")
    adView.setExtraParameterForKey("disable_precache", value: "true")

Price Ceiling Set Per Ad Request

Reduce the waterfall length based on a predicted CPM (e.g. price ceiling).

If you know the user is a low-value user and you have a predicted “average” value for where you think the user will clear, you do not want the user to go through the full waterfall starting at $100 CPM. You want to optimize the waterfall based on user average. For such use cases, AppLovin receives a “ceiling” value from you and returns a waterfall based on the value you provide.

In this use case, auction runs with all bidders enabled on the ad unit (no floor). AppLovin applies the floor to traditionally mediated lines, merges the results, and sends them back to you in the ad response. This ensures that the waterfall is shortened to return faster and appropriately priced results. Bidders continue to receive the full traffic volume.

This feature requires a new API. Contact your account team for more info.

Automated Network Tests

You can programmatically select a network by calling the hidden API shown below. If you need a network that isn’t listed, contact your account team.

AppLovinSdkSettings.setExtraParameter( "test_mode_network", "network-name" );

Please be very careful with this approach, as if you go live with this setting you cannot disable it from the UI.

Valid Network Names

  • ADCOLONY_NETWORK
  • ADMOB_NETWORK
  • APPLOVIN_NETWORK
  • CHARTBOOST_NETWORK
  • FACEBOOK_NETWORK
  • FYBER_NETWORK
  • GOOGLE_AD_MANAGER_NETWORK
  • HYPRMX_NETWORK
  • INMOBI_NETWORK
  • IRONSOURCE_NETWORK
  • LINE_NETWORK
  • MAIO_NETWORK
  • MINTEGRAL_BIDDING
  • MYTARGET_BIDDING
  • NEND_NETWORK
  • OGURY_PRESAGE_NETWORK
  • SMAATO_NETWORK
  • TAPJOY_NETWORK
  • TENCENT_NETWORK
  • TIKTOK_BIDDING
  • UNITY_NETWORK
  • VERIZON_NETWORK
  • VERVE_BIDDING
  • VUNGLE_NETWORK
  • YANDEX_NETWORK