Release Notes
3.8
3.8.1
2024-04-26
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.
Change in Google Mediation Adapter - allow all banner sizes if Google banner size (like for example "adaptive") cannot be matched to specific AATKit banner size.
Fixes
Fixed issue where some information was missing from Google Bidding signals
3.7
3.7.6
2024-04-04
Updated GraviteRTB to 1.1.4 (which fixes an issue with the child-directed handling - COPPA), migrating to Maven distribution. New repository is now required:
maven { //GraviteRTB repository
url 'https://android-sdk-rtb.gravite.net/maven'
}
3.7.2
2024-03-08
API Changes
Added new
ManagedConsent.showIfNeededOrRejected
method to re-ask users that rejected consentIf you would like to periodically ask again users that rejected consent, simply replace your old
showIfNeeded
calls with the new method. Read more here.
Library Updates
GraviteRTB to 1.1.1
3.6
3.6.1
2024-02-27
API Changes
Removed Pubnative offset options for interstitial and rewarded video formats.
Removed the deprecated PubNativeOptions from AATKitAdNetworkOptions.
New Ad Networks
Integrated new ad network IronSourceNew using instanceIDs, supporting Banner, Interstitial and Rewarded Video ads.
Version 7.5.1
Removed Ad Networks
Removed the old IronSource integration (Interstitial / Rewarded Videos).
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 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
3.5
3.5.1
2024-01-16
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.
Fixes
Fixed issue where debug-shake screen sometimes displayed with white text.
Other Changes
Removed deprecated CMPOgury.
3.4
3.4.5
2023-12-05
API Changes
Ogury CMP handling is now deprecated, and will be removed in the future.
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)
The new AATKitAdNetworkOptions now allow also to pass max height of inline adaptive Google banners (GAM and AdMob) (using
AdMobOptions
orDFPOptions
instances).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()
.
Remove deprecated
AATKit.setInitialRules
. Please useAATKitConfiguration.initialRules
instead.Remove deprecated
AATKit.setRuleCachingEnabled
. Please useAATKitConfiguration.isShouldCacheRules
instead.Introduce new BannerCache delegate called
CacheStatusDelegate
representing the cache status.Setting the banner cache retry intervals moved to the
BannerCacheConfiguration
instead of the ManifestUsage:
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")
}
}
New Ad Networks
GraviteRTB SDK (version 1.0.1) supporting banner and fullscreen formats.
Tappx (version 4.0.4), supporting Banner, Fullscreen, and Rewarded Video formats.
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
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
Unity to 4.9.1
Vungle to 7.0.0
YOC to 4.1.2
Optional GoogleUserMessagingPlatform (CMP) to 2.1.0
Optional network AmazonHB to 9.8.7
Optional network Huawei to 3.4.66.303
Optional network Teads to 5.1.1
Improvements
AATKit now provides a completely new shake debug screen. Publishers can customise it by using the new public API
configureDebugScreen(configuration:
AATKitDebugScreenConfiguration
)
.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.
For more information, please visit the IAB CCPA compliance framework.
3.3
3.3.2
2023-08-08
API Changes
Introduce a new factory method for creating the banner cache.
Instead of calling
BannerCache(configuration: BannerCacheConfiguration)
useAATKit.createBannerCache(configuration: BannerCacheConfiguration)
.
Deprecate
AATKit.setInitialRules
. Please useAATKitConfiguration.initialRules
instead.Deprecate
AATKit.setRuleCachingEnabled
. Please useAATKitConfiguration.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 theeditConsent
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.
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
From now on Ogury requires their repository to be added to the list:
maven { url 'https://maven.ogury.co' }
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.2
3.2.3
2023-06-05
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 AdNetwork doesn't support child-directed Requests, AATKit will skip this network while requesting Ads.
API:
fun setIsChildDirected(isChildDirected: Boolean)
Usage:
AATSDK.setIsChildDirected(true)
For more information, please check the child-directed documentation.
Provide impression-level revenue data via the
AATKitImpression
objectAdd
currencyCode
andprecision
properties to theAATImpression
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 samefun didCountImpression(placement: Placement, impression: AATKitImpression)
callback.Currently, only Google Mobile Ads supports impression-level revenue data.
Introduce new banner placement types:
AutoLoadBannerPlacement
andAutoLoadMultiSizeBannerPlacement
which are based onBannerCache
. They are intended to replace bothStickyBannerPlacement
andMultiSizeBannerPlacement
hence, they have precisely the same functionality and provide the same APIs.For more information, please check auto-load banners and multi-size auto-load banners documentation.
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).
Updated logic for automatically disabling networks on devices without Google Play Services.
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.2.
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
3.1.10
2023-03-03
Fix potential NPE in AppNexus native ad.
Change supply chain object handling for Equativ (SmartAdServer).
3.1.6
2022-12-15
First stable version of 3.1
New ad networks
Optional network Teads (version 5.0.21), supporting video banner ads
Updated ad networks
AppLovin to 11.6.0
AppNexus to 8.2 - as this update requires a new identifier for initialising the network SDK, make sure to have network keys updated with memberId in the extraInfo field.
CriteoSDK to 4.8.1
FeedAd to 1.5.3
Google Facebook mediation adapter to 6.12.0.0
Google Play Services Ads to 21.3.0
InMobi to 10.5.2
Ogury to 5.4.0
IronSource 7.2.5
PubNative to 2.16.1
Prebid SDK (Header Bidding solution used together with DFP) to 2.0.4.
SmartAdServer to 7.19.1
UnityAds to 4.4.1
Vungle to 6.12.0
Optional network AmazonHB to 9.6.2
Optional network Bluestack to 4.1.4
Optional network Huawei to 3.4.56.300
Other changes
Xandr (APPNEXUS) update requires a new identifier for initialising the network SDK, make sure to have network keys updated with memberId in the extraInfo field.
Updated optional dependency used with CMPGoogle to
user-messaging-platform:2.0.0
.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
3.0.6
2022-10-18
Fix rare issue preventing Google (AdMob, AdX, DFP) fullscreen ads from being presented.
3.0.2
2022-09-08
The first stable version 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 the general delegate used by AATKit 2), informing about placement events like ad load, pause for ad etc.
Some method names have changed for improved consistency across platforms.
Report new KPI mediationCycles
Report new dimension consent type
Report new dimension consent value
Request rules with consent value
Add a new API for passing PublisherProvidedId to Ad Networks that support it (DFP and DFPDirect)
AATKit.setPublisherProvidedId(String publisherProvidedId)
Some method names have changed for improved consistency across platforms.
Enable Ad Networks SDKs debug logs by server config.
Merging server-side keywords with the SDK global keywords.
Updates
Update PubNative to 2.15.1
Update Xandr (APPNEXUS) SDK to 8.0.1 - as this update requires a new identifier for initialising the network SDK, make sure to have network keys updated with memberId in the extraInfo field.
To migrate from AATKit 2, please refer to our AATKit 3 Migration Guide.
Last updated