Beta Release Notes
Last updated
Last updated
2025-02-19
Removed AATKit.setPublisherProvidedId(publisherProvidedId: String) method. Please use newly introduced UserTargeting to pass this identifier.
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.
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'
GraviteRTB to
2024-11-28
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:
Enable creative history by calling:
placement.enableCreativeHistory(size)
Retrieve the creative history for a placement:
placement.getCreativeHistory()
Implemented a new hybrid RTB/Mayo auction.
Rework Vungle Banner integration using the new APIs
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
2024-09-05
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>"))
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
Bluestack
2024-07-09
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
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
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.
Copy
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)
2024-04-17
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
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.
2024-02-20
Removed Pubnative offset options for interstitial and rewarded video formats.
Removed the deprecated PubNativeOptions from AATKitAdNetworkOptions.
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
Added support for IronSourceNew banner ads
2023-12-28
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'
GraviteRTB SDK to 1.0.2.
Removed deprecated CMPOgury.
2023-11-17
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.
GraviteRTB SDK to 1.0.1.
2023-11-10
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()
}
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
2023-10-18
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'
Unity to 4.9.1.
Vungle to 7.0.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")
}
}
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
}
}
Tappx SDK (version 4.0.4), supporting Banner, Fullscreen, and Rewarded Video formats.
2023-07-17
Improved logging.
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
2023-06-06
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" />
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)
Rubicon
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.
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.
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)
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?
}
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).
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.
2022-10-28
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
2022-10-18
Fix rare issue preventing Google (AdMob, AdX, DFP) fullscreen ads from being presented.
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)
2022-07-25
Move interfaces for placement listeners and consent away from AATKit class to solve issue with AndroidStudio and Java interoperability.
For more information, please visit the .
To learn more about the changes, please refer to our .