AATKit Release Notes
  • iOS
    • Release Notes
    • Beta Release Notes
    • Legacy Release Notes (Change logs)
  • Android
    • Release Notes
    • Beta Release Notes
    • Legacy Release Notes (Change logs)
  • Unity plugin
    • Release Notes
    • Legacy Release Notes (Change logs)
  • React Native Plugin
    • Release Notes
    • Legacy Release Notes (Change logs)
  • Cordova plugin
    • Release Notes
    • Legacy Release Notes (Change logs)
  • Ionic Plugin
    • Release Notes
  • FLUTTER PLUGIN
    • Release Notes
  • Getting Started
    • iOS Integration
    • Android Integration
    • Unity Plugin Integration
    • React Native Plugin Integration
    • Cordova Plugin Integration
  • Ionic Plugin Integration
  • Flutter Plugin Integration
Powered by GitBook
On this page
  • 3.13.Beta
  • 3.12 Beta
  • 3.11 Beta
  • 3.10 Beta
  • 3.9 Beta
  • 3.8 Beta
  • 3.7 Beta
  • 3.6 Beta
  • 3.5 Beta
  • 3.4 Beta
  • 3.3 Beta
  • 3.2 Beta
  • 3.1 Beta
  • 3.0 Beta
  1. Android

Beta Release Notes

Last updated 9 days ago

3.13.Beta

3.13.4

2025-06-06

Fixes

  • Fixed an issue with optional network AmazonHB, where testing mode was enabled by default.

3.13.3

2025-05-28

Notice

  • Due to update of Google Play Services ads, your project may now need to be enabled to build. Please follow the linked documentation in case of issues.

Improvements

  • Redesigned the content layout of the shake-debug email for better readability.

  • Added new configuration options to AATDebugScreenConfiguration for enhanced control over the debug screen:

    • showDebugLogsToggle: Toggles the display of debug logs. (Default: true)

    • showDeviceFilteredRulesToggle: Toggles the display of device-filtered rules. (Default: true)

    • showCloseButton: Toggles the display of the close button. (Default: true)

Library Updates

  • AppLovin to 13.2.0

  • FacebookAds to 6.20.0.0

  • FeedAd to 1.7.1

  • Google Ads to 24.3.0

  • GraviteRTB to

  • InMobi to 10.8.3

  • IronSource to 8.8.0

  • Mintegral to 16.9.71

  • Smaato to 22.7.2

  • Tappx to 4.1.11

  • Unity to 4.14.2

  • Vungle to 7.5.0

  • optional network AmazonHB to 11.0.0

  • optional network display.io to 5.4.9

  • optional network Huawei to 3.4.78.301

  • optional network Teads to 5.1.12

  • optional CMP Google User Messaging Platform to 3.2.0

  • optional CMP SourcePoint to 7.13.0

Removed Libraries

  • AppLovinMAX has been removed.

Fixes

  • Fixed an issue with muting of rewarded video ads

Versions of optional libraries supported by this version

Library
Version

AmazonHB

11.0.0

Display.io

5.4.9

Huawei Ads

3.4.78.301

Kidoz

9.1.2

Superawesome

9.4.0

Google CMP (User Messaging Platform)

3.2.0

Sourcepoint CMP

7.13.0

SFBX CMP (AppConsent)

5.5.4

3.13.2

2025-05-15

Improvements

  • Introduced new API in BannerRequest allowing to perform dynamic ad key replacement for infeed banner ads.

    • bannerRequest.networkKeyReplacements = mapOf(
                  "key1" to "value1",
                  "key2" to "value2",
                  "anotherKey" to "anotherValue"
              )
    • This feature is only intended for very specific use cases. Please contact your Account Manager before using it.

    • It replaces placeholders entered in curly brackets ({}) in ad network key or extraInfo part to provided mapping value, for example:

      • adId 1234:{key1}-{anotherKey} would be transformed to 1234:value1-anotherValue

  • Implemented handling of Xandr (AppNexus) memberId:inventoryCode type of ad keys.

  • Added creativeId information for Verve (PubNative) ads to debug-shake screen.

Library Updates

  • Xandr (AppNexus) to 9.5.0

3.13.1

2025-05-09

Improvements

  • Added support for GraviteRTB Rewarded Video ads format.

Library Updates

  • GraviteRTB to

3.12 Beta

3.12.3

2025-02-27

Fixes

  • Fixed presentation of debug-shake screen when device is in landscape orientation.

3.12.2

2025-02-21

Library Updates

  • Ogury to 6.0.1.

  • Verve (PubNative) to 3.3.0

Fixes

  • Fixed loading of Ogury ads.

3.12.1

2025-02-19

API changes

  • Removed AATKit.setPublisherProvidedId(publisherProvidedId: String) method. Please use newly introduced UserTargeting to pass this identifier.

Improvements

  • Provide user targeting API and pass it to ad networks.

    • setUserTargeting(userTargeting: AATKitUserTargeting)

    • Usage:

    AATKit.setUserTargeting(AATKitUserTargeting(
                userID = "<USER_ID>",
                gender = <GENDER>,
                yearOfBirth = <YearOfBirth>,
                keywords = listOf("keyword1", "keyword2")
            ))
  • Provide default consent implementation where TCF and CCPA will be checked if no specific Consent is used.

  • Improve consent handling for non-IAB networks in non-EU countries when ManagedConsent is used.

New Libraries

  • Implemented new optional Display.IO ad network, which includes Interscroller, Classic banners (320x50, 300x250) and inline banners.

    To use it, first add the needed maven repository to your list:

    maven {
        url "https://maven.display.io/"
    }

    Followed by the dependency:

    implementation 'com.brandio.ads:sdk:5.4.0'

Library Updates

3.11 Beta

3.11.0

2024-11-28

Improvements

  • Implemented a completely new shake debug screen.

    • Creative Timestamp Added the creative timestamp to the placement-loaded ads screen.

    • Shake Debug Info Sharing You can now share a summary of the shake debug information via email using the share button in the new shake debug screen.

  • Introduced a new API for retrieving creative history across all banner formats, that is also available in shake-debug screen.

    Steps to Implement:

    1. Enable creative history by calling:

      placement.enableCreativeHistory(size)
    2. Retrieve the creative history for a placement:

      placement.getCreativeHistory()
  • Implemented a new hybrid RTB/Mayo auction.

  • Rework Vungle Banner integration using the new APIs

Library Updates

  • AppLovin to 13.0.1

  • AppNexus to 9.2.0

  • CriteSDK to 7.1.0

  • FacebookAds to 6.18.0.0

  • Feedad to 1.6.1

  • Google Ads to 23.5.0

  • InMobi to 10.8.0

  • IronSource to 8.5.0

  • Ogury to 6.0.0

  • Pubnative to 3.2.1

  • Smaato to 22.7.1

  • SmartAdServer to 7.25.0

  • Tappx to 4.1.6

  • Unity to 4.12.5

  • Vungle to 7.4.2

  • optional network AmazonHB to 9.10.3

  • optional network Huawei to 3.4.75.301

  • optional network Teads to 5.1.9

  • optional CMP SFBX to 5.5.4

3.10 Beta

3.10.0

2024-09-05

Improvements

  • Added support for GraviteRTB native ads format.

  • Added support for Vungle AppOpen ads format.

  • Added AATAdInfo object across multiple ad formats, including Fullscreen, Rewarded, Native Ads, and Infeed Banners:

    • Fullscreen/Rewarded Video:

      val info = placement?.adInfo
    • Native Ads:

      val nativeAd = placement.getNativeAd()
      val info = nativeAd.adInfo
    • Infeed Banners:

      val info = loadedBannerView.adInfo

    The AATAdInfo class provides detailed price information:

class AdInfo (val priceInfo: PriceInfo?)
class PriceInfo (
    val price: Double,
    val currency: Currency,
    val precisionType: PrecisionType)
  • Added support for passing the user ID to ad networks for server-side verification of rewarded videos.

    Usage:

    AATKit.setRewardedAdSSVInfo(RewardedAdSSVInfo("<USER_ID>"))

Library Updates

  • AppLovin to 12.6.1

  • Google Ads to 23.3.0

  • GraviteRTB to 1.4.3

  • InMobi to 10.7.7

  • IronSource to 8.3.0

  • Mintegral to 16.8.41

  • PubNative to 3.0.4

  • Smaato to 22.6.3

  • Tappx to 4.1.5

  • YOC to 4.1.3

  • optional network AmazonHB to 9.10.2

  • optional network Huawei to 3.4.74.300

  • optional network Superawesome to 9.4.0

  • optional network Teads to 5.1.5

  • optional CMP GoogleUserMessagingPlatform to 3.0.0

  • optional CMP SourcepointCMP to 7.10.1

Removed Ad Networks

  • Bluestack

3.9 Beta

3.9.2

2024-07-16

Library Updates

  • GraviteRTB to 1.3.1

3.9.1

2024-07-09

API Changes

  • Changes in AATKitImpression object returned by ImpressionListener:

    • Removed mediationType, price, currencyCode and precision fields

    • Added priceInfo field of type PriceInfo, containing information about

      • price, currency and precision type

Library Updates

  • AppLovin to 12.5.0

  • Google ads to 23.2.0

  • InMobi to 10.7.4

  • IronSource to 8.1.0

  • Mintegral to 16.7.71

  • Ogury to 5.8.0

  • PubNative to 3.0.2

  • Smaato to 22.6.2

  • SmartAdServer to 7.24.0

  • Tappx to 4.1.3

  • Vungle to 7.3.2

  • Optional network AmazonHB to 9.10.1

  • Optional network Huawei to 3.4.72.301

  • Optional CMP SourcePointCMP to 7.8.4

3.9.0

2024-06-26

Improvements

  • Enhanced the internal loading logic in AATKit to report failures instead of issuing warning logs when the Activity is unavailable.

    • The above enhancement fixed a bug in the AATKidGoogleMediationAdapter where failures were not reported immediately, previously being reported as timeout failures.

  • Enhanced the shake debug screen to include the following details:

    • Type of the placement.

    • Active frequency capping settings.

    • Banner auto-reload intervals.

    • Initial delay and remaining time.

    • Display of the bidder (DSP name) for the GraviteRTB marketplace.

  • Introduced a network option to enforce the RTBSDK close button for MRAID fullscreen ads.

    • Note: If the MRAID creative already includes a close button and forceCloseButtonForMraid is set to true, the MRAID creative will display two close buttons.

val config = AATKitConfiguration(this)
...
val networkOptions = AATKitAdNetworkOptions()
networkOptions.graviteRTBOptions = GraviteRTBOptions(false)
...
AATKit.init(config)
  • The ImpressionListener now delivers precise price information for all mediation types, for ad networks that support pricing data.

Library Updates

  • GraviteRTB to 1.3.0

New Libraries

  • Integrated the new CMP: SFBX (AppConsent) version 5.3.0. To use it, first add the needed maven repository to your list:

maven { // SFBX CMP
        url "https://artifactory.datalf.chat/artifactory/app-consent-v2-release"
}

Followed by the dependency:

implementation 'com.sfbx.appconsent:appconsent-ui-v3:5.3.0'
  • Usage:

val cmp: CMP = CMPAppConsent(activity, "<APP_KEY>")
val managedConsent = ManagedConsent(cmp, activity, delegate)
val newConf = AATKitRuntimeConfiguration()
newConf.consent = managedConsent
AATKit.reconfigure(newConf)

3.8 Beta

3.8.0

2024-04-17

Library Updates

  • AppLovin to 12.4.2

  • AppNexus to 8.11

  • FacebookAds to 6.17.0.0

  • FeedAd to 1.6.0

  • InMobi to 10.6.7

  • IronSource to 8.0.0

  • Pubnative to 3.0.0

  • Smaato to 22.6.0

  • Tappx to 4.0.8

  • UnityAds to 4.10.0

  • Vungle to 7.3.1

  • Optional network AmazonHB to 9.9.4

  • Optional network Bluestack to 4.3.2

  • Optional network Huawei to 3.4.70.300

  • Optional network Kidoz to 9.1.2

  • Optional CMP Sourcepoint to 7.8.1

Improvements

  • Added "initial rules" feature, where placement can be set to use a subset of ad rules for the first load. This is intended to allow placement first load to happen faster.

  • Optimized initializing of Google Ads and InMobi SDKs for faster ad loading.

  • Changing consent state will now trigger rule download - to pick optimal set of rules for given consent setting.

3.7 Beta

3.7.0

2024-02-23

  • Update GraviteRTB to 1.1.0

3.6 Beta

3.6.1

2024-02-20

API Changes

  • Removed Pubnative offset options for interstitial and rewarded video formats.

    • Removed the deprecated PubNativeOptions from AATKitAdNetworkOptions.

Library Updates

  • Appnexus to 8.10

  • CriteoSDK to 6.0.0

  • GoogleAds to 22.6.0

  • InMobi to 10.6.3

  • Mintegral to 16.6.34

  • Ogury to 5.6.2

  • GraviteRTB to 1.0.4

  • Pubnative to 2.21.1

  • Smaato to 22.5.1

  • SmartAdServer to 7.24.0

  • TappX to 4.0.7

  • UnityAds to 4.9.2

  • Vungle to 7.1.0

  • optional network AmazonHB to 9.9.1

  • optional network Huawei to 3.4.69.300

  • optional network Kidoz to 9.0.2

  • optional network Superawesome to 9.3.2

  • optional network Teads to 5.1.4

  • optional CMP SourcePoint to 7.7.0

c

  • Added support for IronSourceNew banner ads

3.6.0

2024-02-02

New Ad Networks

  • Integrate the new ad network IronSourceNew using instanceIDs (Interstitial / Rewarded Videos).

    • Version 7.5.1

Removed Ad Networks

  • Remove the old IronSource integration (Interstitial / Rewarded Videos).

Library Updates

  • GraviteRTB SDK to 1.0.3.

3.5 Beta

3.5.0

2023-12-28

New Ad Networks

  • Optional Ad Network SuperAwesome, supporting Banner, Fullscreen and RewardedVideo ads

    • It is needed to add SuperAwesome repository to main build.gradle:

    maven { url "https://aa-sdk.s3-eu-west-1.amazonaws.com/android_repo" }
    • Additionally, add the following dependency:

    implementation 'tv.superawesome.sdk.publisher:superawesome:9.3.0'

Library Updates

  • GraviteRTB SDK to 1.0.2.

Other Changes

  • Removed deprecated CMPOgury.

3.4 Beta

3.4.4

2023-11-17

Improvements

  • Add CCPA support.

    • AATKit now supports CCPA only if the CCPA consent string is found. AATKit will read and react automatically to the CCPA changes in SharedPreferences.

    • If both TCF and CCPA consent strings are present, the TCF settings will be used.

Library Updates

  • GraviteRTB SDK to 1.0.1.

3.4.3

2023-11-10

API Changes

  • Remove deprecated AATKit.setInitialRules. Please use AATKitConfiguration.initialRules instead.

  • Remove deprecated AATKit.setRuleCachingEnabled. Please use AATKitConfiguration.isShouldCacheRules instead.

  • Introduce new BannerCache delegate called CacheStatusDelegate representing the cache status.

/**
* Optional delegate representing the cache status.
*/
interface CacheStatusDelegate {
    /**
     * Will be called when the cache was empty and has been filled with at least one ad.
     */
    fun cacheIsNoLongerEmpty()

    /**
     * Will be called when the las ad from cache has been consumed and cache became (temporarily) empty.
     */
    fun cacheIsEmpty()
}

Library Updates

  • AppLovin to 11.11.3

  • AppNexus to 8.9

  • Facebook to 6.16.0.0

  • GoogleAds to 22.5.0

  • InMobi to 10.6.1

  • IronSource to 7.5.2

  • MintegralAds to 16.5.41

  • Ogury to 5.6.1

  • Pubnative to 2.20.0

  • Smaato to 22.4.0

  • SmartAd to 7.23.0

  • YOC to 4.1.1

  • Optional GoogleUserMessagingPlatform (CMP) to 2.1.0

  • Optional network AmazonHB to 9.8.7

  • Optional network Teads to 5.1.1

  • Optional network Huawei to 3.4.66.303

3.4.2

2023-10-25

New Ad Networks

  • GraviteRTB SDK (version 1.0.0) supporting banner and fullscreen formats.

3.4.1

2023-10-18

New Ad Networks

  • Optional network Kidoz (version 8.9.9), supporting banner, fullscreen and rewarded video ads

    • for banners, only multisize is supported

    • To add Kidoz, add the following dependencies:

implementation 'net.kidoz.sdk:kidoz-android-native:8.9.9'
implementation 'org.greenrobot:eventbus:3.3.1'

Library Updates

  • Unity to 4.9.1.

  • Vungle to 7.0.0.

3.4.0

2023-09-26

  • Introduce a new public API getDebugInfoObject(): AATKitDebugInfo for obtaining the debug information that will be presented if the shake debug screen is enabled.

    • Usage: val debugObject = AATKit.getDebugInfoObject().

  • AATKit will not use the AndroidManifest.xml configurations anymore. Instead, you can use the new AATKitAdNetworkOptions object while initialising AATKit.

val config = AATKitConfiguration(this)
...
config.adNetworkOptions = AATKitAdNetworkOptions(
    appNexusOptions = AppNexusOptions(5, true, false),
    adMobOptions = AdMobOptions(75)
)
...
AATKit.init(config)
/**
 * Allows to pass network-specific configurations to AATKit.
 */
class AATKitAdNetworkOptions(
    var appNexusOptions: AppNexusOptions? = null,
    var feedAdOptions: FeedAdOptions? = null,
    var pubNativeOptions: PubNativeOptions? = null,
    var adMobOptions: AdMobOptions? = null,
    var dfpOptions: DFPOptions? = null
)

/**
 * PubNative specific configurations
 */
class PubNativeOptions(
    /**
     * Minimum offset in seconds required before skipping an HTML Interstitial ad. Null by default.
     */
    var skipOffsetForHTMLInterstitial: Int? = null,

    /**
     * Minimum offset in seconds required before skipping an Video Interstitial ad. Null by default.
     */
    var skipOffsetForVideoInterstitial: Int? = null
)

/**
 * FeedAd specific configurations
 */
class FeedAdOptions(
    /**
     * Desired color-int (as obtained from [android.graphics.Color.parseColor]) to be used for shutter. Default is null.
     */
    var shutterColor: Int? = null,

    /**
     * Boolean that describes if spinner should be disabled, default is false.
     */
    var disableSpinner: Boolean = false
)

/**
 * AppNexus specific configuration
 */
class AppNexusOptions (
    /**
     * A delay in seconds after which  a full-screen ad will be dismissed. Default value is null.
     */
    var autoCloseTime: Int? = null,

    /**
     * A Boolean that describes if Banner Ad can serve a Native Ad, default is false.
     */
    var supportNativeBanner: Boolean = false,

    /**
     * A Boolean that describes if Banner Ad can serve Video Ads, default is false.
     */
    var supportVideoBanner: Boolean = false
)

/**
 * AdMob specific configuration
 */
class AdMobOptions (
    /**
     * Maximum height for AdMob inline adaptive banners
     */
    var inlineBannerMaxHeight: Int?
)

/**
 * AdMob specific configuration
 */
class DFPOptions (
    /**
     * Maximum height for DFP inline adaptive banners
     */
    var inlineBannerMaxHeight: Int?
)
  • Setting the banner cache retry intervals moved to the BannerCacheConfiguration instead of the Manifest

    • Usage:

val conf = BannerCacheConfiguration("<PLACEMENT_NAME>", 5)
conf.retryInterval = 10
val cache = AATKit.createBannerCache(conf)
  • Publishers can pass the collapsible banner options (CollapsibleBannerOptions) to all banner placements using available APIs instead of using the Manifest declaration:

class CollapsibleBannerOptions(val position: CollapsiblePosition, val minDelayInSeconds: Int) {

    constructor(position: CollapsiblePosition) : this(position, 0)

    enum class CollapsiblePosition(val value: String) {
        TOP("top"),
        BOTTOM("bottom")
    }
}

Improvements

  • Allow passing max height of inline adaptive Google banners (GAM and AdMob) using AATKitAdNetworkOptions passing AdMobOptions or DFPOptions instances.

val conf = AATKitConfiguration(this)
...
conf.adNetworkOptions = AATKitAdNetworkOptions(
    adMobOptions = AdMobOptions(inlineBannerMaxHeight = 50),
    dfpOptions = DFPOptions(inlineBannerMaxHeight = 50)
)
...
AATKit.init(conf)
  • AATKit now provides a completely new shake debug screen. Publishers can customise it by using the new public API configureDebugScreen(configuration: AATDebugScreenConfiguration).

val aatKitDebugScreenConfiguration = AATKitDebugScreenConfiguration(R.drawable.ic_launcher, "<APP_NAME>")
AATKit.configureDebugScreen(aatKitDebugScreenConfiguration)
class AATKitDebugScreenConfiguration {

    internal enum class AATKitShakeScreenLogoAlignment {
        Center,
        Left,
        Right
    }

    var appLogoDrawable: Drawable? = null
        private set

    @DrawableRes
    var appLogoFromResources: Int? = null
        private set

    var title: String
        private set

    /**
     * Show bundle identifier. Default value is true
     */
    var showBundleId: Boolean = true

    /**
     * Show test mode data. Default value is true
     */
    var showTestMode: Boolean = true

    /**
     * Show loaded/loading ads. Default value is true
     */
    var showLoadedAndLoadingAds: Boolean = true

    /**
     * Show available ad networks. Default value is true
     */
    var showAvailableNetworks: Boolean = true

    /**
     * Show disabled ad networks. Default value is true
     */
    var showDisabledNetworks: Boolean = true

    /**
     * Show removed ad networks. Default value is true
     */
    var showRemovedNetworkSDKs: Boolean = true

    /**
     * Show unsupported ad networks. Default value is true
     */
    var showUnsupportedNetworks: Boolean = true

    /**
     * Show extra SDKs available. Default value is true
     */
    var showExtraSDKs: Boolean = true

    /**
     * Show information about used consent. Default value is true
     */
    var showConsent: Boolean = true

    /**
     * Show Advertising ID. Default value is true
     */
    var showAdvertisingId: Boolean = true

    /**
     * Logo alignment of type [AATKitShakeScreenLogoAlignment]. Default value is left
     */
    internal var logoAlignment: AATKitShakeScreenLogoAlignment = AATKitShakeScreenLogoAlignment.Left

    /**
     * Show device type. Default value is true
     */
    var showDeviceType: Boolean = true

    /**
     * Create an AATDebugScreenConfiguration instance.
     *
     * @param appLogo - App Logo, as [Drawable].
     * @param title - Shake debug screen title
     */
    constructor(
        appLogo: Drawable,
        title: String
    ) {
        this.appLogoDrawable = appLogo
        this.title = title
    }

    /**
     * Create an AATDebugScreenConfiguration instance.
     *
     * @param appLogo - App Logo, as the drawable resource reference.
     * @param title - Shake debug screen title
     */
    constructor(
        @DrawableRes appLogo: Int,
        title: String
    ) {
        this.appLogoFromResources = appLogo
        this.title = title
    }
}

New Ad Networks

  • Tappx SDK (version 4.0.4), supporting Banner, Fullscreen, and Rewarded Video formats.

3.3 Beta

3.3.1

2023-07-17

Improvements

  • Improved logging.

Library Updates

  • AppLovin to 11.10.1

  • AppNexus to 8.7

  • Criteo to 5.0.1

  • Facebook to 6.14.0.0

  • FeedAd to 1.5.5

  • Google ads to 22.2.0

  • InMobi to 10.5.7

  • IronSource to 7.3.1.1

  • Minteral to 16.4.71

  • Ogury to 5.6.0

  • Pubnative to 2.18.1

  • Smaato to 22.2.0

  • SmartAdServer to 7.21.0

  • Unity to 4.8.0

  • Vungle to 6.12.1

  • Optional network AmazonHB to 9.8.3

  • Optional network Huawei to 3.4.64.302

3.3.0

2023-06-06

API Changes

  • Introduce a new factory method for creating the banner cache.

    • Instead of calling BannerCache(configuration: BannerCacheConfiguration) use AATKit.createBannerCache(configuration: BannerCacheConfiguration).

  • Deprecate AATKit.setInitialRules. Please use AATKitConfiguration.initialRules instead.

  • Deprecate AATKit.setRuleCachingEnabled. Please use AATKitConfiguration.isShouldCacheRules instead.

  • Introduce a new way to Opt-out from showing the CMP

    • ManagedConsent can be initialized by passing a new parameter showIfNeededSetting

    • showIfNeededSetting can be one of the following:

      • ALWAYS: always show the CMP.

      • NEVER: never show the CMP. However, the publisher can still call the editConsent API.

      • SERVER_SIDE_CONTROL: showing the CMP will be based on the dashboard configurations.

    • It has a default value of: serverSideControl.

  • Introduce new method AATKit.isConsentOptIn(), returning "consent opt-in status" returned by our server rules. Only returns meaningful information after the rules are downloaded.

  • Added support for Google Collapsible Banners.

    • For them to work, it is necessary to add meta-data nodes in manifest, indicating desired position of collapsible banners for given placement (either "top" or "bottom"), like:

          <meta-data
              android:name="BannerPlacementName.collapsiblePosition"
              android:value="bottom" />
  • Added support for frequency capping for Collapsible Banners.

    • The desired capping is set per-placement, using manifest metadata. Code sample below means that for placement named "BannerPlacementName" Collapsible Banners can be presented not more often than every 60 seconds.

          <meta-data
              android:name="BannerPlacementName.minDelayBetweenCollapsibleBannersInSeconds"
              android:value="60" />

New Ad Networks

  • Mintegral (version 16.4.11), supporting Banner, Fullscreen and RewardedVideo ads

    • It is needed to add Mintegral repository to main build.gradle:

          maven {
              url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea"
          }
  • Integrate the new CMP: SourcePoint (version 7.1.1).

    • You can add it by adding the following dependency:

    implementation 'com.sourcepoint.cmplibrary:cmplibrary:7.1.1'
    • To use it:

    val configuration = AATKitConfiguration(this)
    val cmp = CMPSourcePoint(activity, <YourAccountID>, <YourPropertyId>, "YourPropertyName", "YourPMId")
    val consent = ManagedConsent(cmp, activity, this)
    // other configurations
    AATKit.init(configuration)

Removed Ad Networks

  • Rubicon

Improvements

  • Implement Frequency Capping for the banner cache.

  • Implement weekly and monthly frequency capping.

  • Enhance the logic for waterfall failure scenarios for the sticky banner placement.

  • Improve AATKit logs.

3.2 Beta

3.2.3

2023-05-16

Fixes

  • Fix timeout handling for Prebid requests.

3.2.2

2023-04-17

Changes

  • Updated logic for automatically disabling networks on devices without Google Play Services.

Fixes

  • Fixed ad key parsing for InMobi Fullscreen and Rewarded Video ads.

3.2.1

2023-03-22

Fixes

  • Fix an issue with Google impression-level revenue data where the price was passed as the single impression price, not the CPM.

Library Updates

  • SmartAdServer to 7.20.2.

3.2.0

2023-03-08

If you did not add your Google appID to the Manifest until now, make sure to do so. The old declaration of AD_MANAGER_APP will no longer work.

API Changes

  • Placements will pass themselves to StatisticsListener listener methods as a parameter called placement of type Placement. This parameter will enable the delegates to know which placement triggered the delegate method. The placement name can be checked by using the method: placement.getName().

    • Changed APIs:

      • fun countedAdSpace(placement: Placement)

      • fun countedMediationCycle(placement: Placement)

      • fun countedRequest(placement: Placement, network: AdNetwork)

      • fun countedResponse(placement: Placement, network: AdNetwork)

      • fun countedImpression(placement: Placement, network: AdNetwork)

      • fun countedVimpression(placement: Placement, network: AdNetwork)

      • fun countedNimpression(placement: Placement, network: AdNetwork)

      • fun countedDirectDealImpression(placement: Placement, network: AdNetwork)

      • fun countedClick(placement: Placement, network: AdNetwork)

  • Placements will pass themselves to ImpressionListener listener methods as a parameter called placement of type Placement. This parameter will enable the delegates to know which placement triggered the delegate method. The placement name can be checked by using the method: placement.getName().

    • Changed APIs:

      • fun didCountImpression(placement: Placement, impression: AATKitImpression)

  • Add child-directed support that enables publishers to treat their content as child-directed while requesting ads. Note: if an AdNetwork doesn't support child-directed Requests, AATKit will skip this network while requesting Ads.

    • Networks providing child-directed requests:

      • AdMmob

      • Google AdManager (DFP)

      • AdX

      • Digital Turbine (AdColony)

      • AppLovin

      • AppLovin MAX

      • Criteo SDK

      • Huawei

      • IronSource

      • Verve (PubNative)

      • Smaato

      • Unity

      • Vungle

    • Networks that will be skipped:

      • Amazon HB

      • Xandr (AppNexus)

      • Bluestack (Madvertise)

      • Facebook

      • FeedAd

      • InMobi

      • Ogury

      • Magnite (Rubicon)

      • Equativ (SmartAdServer)

      • Teads

      • YOC

    • API: fun setIsChildDirected(isChildDirected: Boolean)

    • Usage: AATSDK.setIsChildDirected(true)

  • Provide impression-level revenue data via the AATKitImpression object

    • Add currencyCode and precision properties to the AATImpression object.

    • If the ad network provides impression-level revenue data, AATKit will use this information during the AATKitImpression instantiation and pass it to ImpressionListener via the fun didCountImpression(placement: Placement, impression: AATKitImpression) callback. Otherwise, AATKit will detect and collect the impression-level information internally and provide it to the impression delegate via the same fun didCountImpression(placement: Placement, impression: AATKitImpression) callback.

    • Currently, only Google Mobile Ads supports impression-level revenue data.

  • Introduce new banner placement type: AutoLoadBannerPlacement and AutoLoadMultiSizeBannerPlacement which are based on BannerCache. They are intended to replace both StickyBannerPlacement and MultiSizeBannerPlacement hence, they have exactly the same functionality and provide the same APIs.

    • Creating the placement:

      • Java: AutoLoadBannerPlacement placement = AATKit.createAutoLoadBannerPlacement("<PLACEMENT_NAME>", BannerPlacementSize.Banner320x53);

      • Java: AutoLoadMultiSizeBannerPlacement placement = AATKit.createAutoLoadMultiSizeBannerPlacement("<PLACEMENT_NAME>");

      • Kotlin: val placement = AATKit.createAutoLoadBannerPlacement("<PLACEMENT_NAME>", BannerPlacementSize.Banner320x53)

      • Kotlin: val placement = AATKit.createAutoLoadMultiSizeBannerPlacement("<PLACEMENT_NAME>")

    • Public Interfaces:

interface AutoLoadBannerPlacement : Placement {
    /**
     * Set the [placement listener][AutoLoadBannerPlacementListener] that will listen to ad loading and display events.
     */
    var listener: AutoLoadBannerPlacementListener?

    /**
     * Sets the [statistics listener][AATKit.StatisticsListener] that will be notified about placement reporting events, like counted adspace, request etc.
     */
    var statisticsListener: AATKit.StatisticsListener?

    /**
     * Sets the [impression listener][ImpressionListener] for the given placement.
     */
    var impressionListener: ImpressionListener?

    /**
     * Enables automatic reloading of placement. Autoreloader will use reload time configured on addapptr.com account or fallback to default {@value #BANNER_DEFAULT_RELOAD_INTERVAL_IN_SECONDS} seconds.
     */
    fun startAutoReload()

    /**
     * Disables automatic reloading of placement.
     */
    fun stopAutoReload()

    /**
     * Returns true if there is an ad loaded for given placementId.
     *
     * @return True if there is an ad loaded for given placementId.
     */
    fun hasAd(): Boolean

    /**
     * Returns placement view. Works only for banner placements.
     *
     * @return Placement view or null.
     */
    fun getPlacementView(): View?

    /**
     * Sets placement default image. This image will be shown in placement when no ad is available.
     *
     * @param image       The bitmap to set.
     */
    fun setDefaultImage(image: Bitmap?)

    /**
     * Sets placement default image. This image will be shown in placement when no ad is available.
     *
     * @param resId       The identifier of the resource.
     */
    fun setDefaultImage(resId: Int)

    /**
     * Sets gravity for ads that don't fill entire placement area. Works only for banner placements.
     *
     * @param gravity     The [android.view.Gravity] to set.
     */
    fun setContentGravity(gravity: Int)

    /**
     * Sets the targeting information for the given placement. Information provided for placement overrides targeting information for application set by the [setTargetingInfo].
     */
    var targetingInfo: Map<String, List<String>>?

    /**
     * Sets the content targeting url for the application. This information will be used only if no placement-specific targeting is available.
     *
     * @see .setContentTargetingUrl
     */
    var contentTargetingUrl: String?

}
interface AutoLoadMultiSizeBannerPlacement : Placement {
    /**
     * Set the [placement listener][AutoLoadMultiSizeBannerPlacementListener] that will listen to ad loading and display events.
     */
    var listener: AutoLoadMultiSizeBannerPlacementListener?

    /**
     * Sets the [statistics listener][AATKit.StatisticsListener] that will be notified about placement reporting events, like counted adspace, request etc.
     */
    var statisticsListener: AATKit.StatisticsListener?

    /**
     * Sets the [impression listener][ImpressionListener] for the given placement.
     */
    var impressionListener: ImpressionListener?

    /**
     * Enables automatic reloading of placement. Autoreloader will use reload time configured on addapptr.com account or fallback to default {@value #BANNER_DEFAULT_RELOAD_INTERVAL_IN_SECONDS} seconds.
     */
    fun startAutoReload()

    /**
     * Disables automatic reloading of placement.
     */
    fun stopAutoReload()

    /**
     * Sets the targeting information for the given placement. Information provided for placement overrides targeting information for application set by the [setTargetingInfo].
     */
    var targetingInfo: Map<String, List<String>>?

    /**
     * Sets the content targeting url for the application. This information will be used only if no placement-specific targeting is available.
     *
     * @see .setContentTargetingUrl
     */
    var contentTargetingUrl: String?
}

Improvements

  • Implement Google Mobile Ads Fluid banners.

  • Extend cached rules lifetime.

  • Throttle download rules request when failed.

  • Add internal custom timeout for Prebid requests (3.5 seconds).

Library Updates

  • AppLovin to 11.8.0.

  • AppNexus to 8.4.

  • Criteo to 4.9.1.

  • FeedAd to 1.5.4.

  • Google Play Services Ads to 21.5.0.

  • InMobi to 10.5.4.

  • IronSource to 7.2.7.

  • Smaato to 22.0.2.

  • SmartAdServer to 7.20.0.

  • UnityAds to 4.6.0.

  • YOC to 3.2.0.

  • Optional network AmazonHB to 9.7.0.

  • Optional network Huawei to 3.4.61.302.

  • Optional network Teads to 5.0.22.

3.1 Beta

3.1.5

2022-11-24

  • Fixed potential crash in optional AmazonHB network.

3.1.4

2022-11-18

  • Updated FeedAd to 1.5.2.

  • Fixed issue with Vungle banner implementation.

3.1.3

2022-11-09

  • Updated Prebid SDK (Header Bidding solution used together with DFP) to 2.0.4.

3.1.2

2022-10-28

Updated ad networks

  • AppLovin to 11.5.3

  • AppNexus to 8.1

  • CriteoSDK to 4.8.1

  • FeedAd to 1.4.14

  • Google Facebook mediation adapter to 6.11.0.1

  • GooglePlayServicesAds to 21.3.0

  • InMobi to 10.5.2

  • IronSource 7.2.5

  • PubNative to 2.16.0

  • SmartAdServer to 7.19.1

  • UnityAds to 4.4.1

  • Vungle to 6.12.0

  • Optional network AmazonHB to 9.6.0

  • Optional network Huawei to 3.4.56.300

3.1.1

2022-10-18

  • Fix rare issue preventing Google (AdMob, AdX, DFP) fullscreen ads from being presented.

3.1.0

2022-10-12

  • Implement the “Placements initial delay” feature for all ad formats.

    • This feature allows publishers to delay the provision of ads for a configurable amount of seconds after the first app fresh install.

    • Publishers can control the initial delay for each placement using the AddApptr dashboard in the create/edit placements popup.

  • Provide the "supply chain object" to SmartAd Server ad requests.

  • Placements will pass themselves to all placements-specific listener methods as a parameter called Placement to their listeners. This parameter will enable the listeners to know which placement triggered the listener method. The placement name can be checked by using method: placement.getName().

    • Changed APIs:

      • public void onHaveAd(@NonNull Placement placement)

      • public void onNoAd(@NonNull Placement placement)

      • public void onPauseForAd(@NonNull Placement placement)

      • public void onResumeAfterAd(@NonNull Placement placement)

      • public void onUserEarnedIncentive(@NonNull Placement placement, @Nullable AATKitReward aatKitReward)

      • public void onHaveAdWithBannerView(@NonNull Placement placement, @NonNull BannerPlacementLayout bannerView)

3.0 Beta

3.0.1

2022-07-25

  • Move interfaces for placement listeners and consent away from AATKit class to solve issue with AndroidStudio and Java interoperability.

3.0.0

2022-07-22

First beta of AATKit 3

AATKit 3 comes with the following improvements:

  • New object-oriented APIs for all placement types.

  • Each placement now uses a separate delegate (as opposed to general delegate used by AATKit 2).

  • Some method names have changed for improved consistency across platforms.

GraviteRTB to

For more information, please visit the .

To learn more about the changes, please refer to our .

core library desugaring
1.7.3
1.7.1
1.6.0
IAB CCPA compliance framework
AATKit 3 Migration Guide