Beta Release Notes
iOS SDK beta releases
3.8 Beta
3.8.0-beta2
2024-04-18
Note: The following ad networks haven't yet added the Apple Privacy Manifest file and will be optional dependencies for AATKit to avoid blocking publishing apps on the AppStore:
AppNexus (PrivacyInfo.xcprivacy is not included in the Cocoapods installation)
Criteo (PrivacyInfo.xcprivacy is not included in the Cocoapods installation)
Prebid
Tappx
YOC
Bluestack
Datonomy
Library Updates
AppLovin to 12.4.1
AppNexus to 8.11.1
Amazon to 4.9.2
Criteo to 6.0.0
FeedAd to 1.6.0
Facebook to 6.15.0.0
InMobi to 10.7.1
MintegralAdSDK to 7.6.2
OgurySdk to 4.2.3
GoogleMobileAds to 11.3.0
GoogleUserMessagingPlatform to 2.3.0
GraviteRTB to 1.1.0
MintegralSDK to 7.6.2
Pubnative to 3.0.0
Smaato to 22.8.2
UnityAds to 4.10.0
TeadsSDK to 5.1.2
Vungle to 7.3.1
IronSource to 8.0.0
SuperAwesome to 9.3.3
SourcePoint to 7.6.5
Improvements
Add Xcode 15 support.
Updated the minimum deployment target to iOS 12.
Added support for privacy manifest files.
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 the placement's first load to happen faster.
Changing the consent state will now trigger rule download - to pick the optimal set of rules for the given consent setting.
Early initialise of GoogleMobileAds.
Fixes
Fix an issue where SuperAwesome empty ads were not reported as failures.
3.7 Beta
3.6 Beta
3.6.0-beta2
2024-02-20
Improvements
Added support for IronSourceNew banner ads.
Note: A placement will present an IronSource banner once and block this IronSource instance ID for the next load as long as the banner is on screen. Then, the next render of another ad network ad will remove this blocking.
Suppose placement "A" presents an IronSource banner for an instance ID. In that case, no other placements can load this instance ID until placement "A" presents another ad and unblock this instance ID.
Library Updates
AmazonPublisherServicesSDK to 4.7.8
AppLovinSDK to 12.1.0
AppNexus to 8.10.2
GoogleMobileAdsMediationFacebook to 6.14.0.0
Smaato to 22.6.1
MintegralAds to 7.5.6
SmartAd to 7.23.
UnityAds to 4.9.2
TeadsSDK to 5.1.0
VungleAds to 7.2.2
Tappx to 4.0.10
SuperAwesome to 9.3.1
prebid to 2.2.0
GraviteRTB to 1.0.0-beta11
3.6.0-beta1
2024-02-01
New Ad Networks
Integrate the new ad network IronSource using multiple instances (Interstitial / Rewarded Videos).
Version 7.7.0.0.
Removed Ad Networks
Remove the old IronSource integration (Interstitial / Rewarded Videos).
Changes
Remove Pubnative offset options for interstitial and rewarded video formats.
Remove the deprecated
AATPubNativeOptions
fromAATAdNetworksOptions
.
3.5 Beta
3.5.0-beta1
2024-01-08
New Ad Networks
Integrate the new Ad Network SuperAwesome, supporting banner, fullscreen and rewarded video ads.
SuperAwesome is an optional ad network. To add it, add this line to your Podfile:
pod AATKit/SuperAwesome
.
Library Updates
GraviteRTB SDK to 1.0.0-beta4.
Other Changes
Removed deprecated CMPOgury.
3.4 Beta
3.4.0-beta8
2023-11-16
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 UserDefaults.
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.
Library Updates
GraviteRTB SDK to 1.0.0-beta3.
3.4.0-beta6
2023-11-07
Library Updates
GoogleMobileAds to 10.12.0
AppLovin to 11.11.4
AppNexus to 8.9.0
Criteo to 5.0.4
GoogleUserMessagingPlatform to 2.1.0
GoogleMobileAdsMediationFacebook to 6.14.0.0
FeedAd to 1.5.4
InMobi to 10.6.0
MintegralAds to 7.4.8
Ogury to 4.2.2
Smaato to 22.4.0
SmartAd to 7.23.1
UnityAds to 4.9.1
YOC to 4.1.1
Vungle to 7.1.0
Prebid to 2.1.6
IronSource to 7.5.1
SourcePoint to 7.4.3
API Changes
Deprecate Pubnative (Verve) offset settings for interstitial and rewarded video ads.
Pubnative will no longer support
setHTMLInterstitialSkipOffset()
andsetVideoInterstitialSkipOffset()
methods (Pubnative release notes).Therefore, AATKit deprecated
AATPubNativeOptions.pubNativeOptions
and will no longer support it from version 3.5.
Improvements
Provide a new BannerCache delegate called
AATBannerCacheStatusDelegate
that represents the cache status.
/// The delegate that represents the cache status
@objc
public protocol AATBannerCacheStatusDelegate: AnyObject {
/// Will be called when the cache was empty and has been filled with at least one ad
func cacheIsNoLongerEmpty()
/// Will be called when the cache was filled and has been consumed and became empty
func cacheIsEmpty()
}
Fixes
Fix an issue with AppNexus multi-size banners where the banner size wasn't adapting the actual ad creative size.
3.4.0-beta3
2023-10-19
New Ad Networks
GraviteRTB SDK (version 1.0.0-beta1) supporting banner and fullscreen formats.
API Changes
AATKit will not read the Datonomy API key from the info.plist anymore. Instead, use the AATAdNetworksOptions passing AATDatonomyOptions instance with the proper Datonomy API key.
@objc public class AATAdNetworksOptions: NSObject {
public var appNexusOptions: AATAppNexusOptions?
public var feedAdOptions: AATFeedAdOptions?
public var pubNativeOptions: AATPubNativeOptions?
public var adMobOptions: AATAdMobOptions?
public var dfpOptions: AATDFPOptions?
public var datonomyOptions: AATDatonomyOptions?
/// Init AATAdNetworksOptions
/// - Parameter appNexusOptions: AppNexus options. default is nil
/// - Parameter feedAdOptions: FeedAd options. default is nil
/// - Parameter pubNativeOptions: Pubnative options. default is nil
/// - Parameter adMobOptions: AdMob options. default is nil
/// - Parameter dfpOptions: DFP options. default is nil
/// - Parameter datonomyOptions: Datonomy options. default is nil
public init(appNexusOptions: AATAppNexusOptions? = nil, feedAdOptions: AATFeedAdOptions? = nil, pubNativeOptions: AATPubNativeOptions? = nil, adMobOptions: AATAdMobOptions? = nil, dfpOptions: AATDFPOptions? = nil, datonomyOptions: AATDatonomyOptions? = nil)
}
@objc public class AATAppNexusOptions : NSObject {
/// a delay in seconds after which a full-screen ad will be dismissed, default value is nil.
public let autoCloseTime: Int?
/// a Boolean that describes if Banner Ad can serve a Native Ad, default is false.
public let supportNativeBanner: Bool
/// Init AATAppNexusOptions
/// - Parameter autoCloseTime: A delay in seconds after which a full-screen ad will be dismissed, default value is nil.
/// - Parameter supportNativeBanner: A Boolean that describes if Banner Ad can serve a Native Ad, default is false.
@objc public init(autoCloseTime: NSNumber? = nil, supportNativeBanner: Bool = false)
}
@objc public class AATFeedAdOptions: NSObject {
/// Desired UIColor to be used for shutter, default is nil.
public let shutterColor: UIColor?
/// Boolean that describes if spinner should be disabled, default is false.
public let disableSpinner: Bool
/// Init AATFeedAdOptions
/// - Parameter shutterColor: Desired UIColor to be used for shutter, default is nil.
/// - Parameter disableSpinner: Boolean that describes if spinner should be disabled, default is false.
@objc public init(shutterColor: UIColor? = nil, disableSpinner: Bool = false)
}
@objc public class AATPubNativeOptions : NSObject {
/// Minimum offset in seconds required before skipping an HTML Interstitial ad.
public let skipOffsetForHTMLInterstitial: Int?
/// Minimum offset in seconds required before skipping a Video Interstitial ad.
public let skipOffsetForVideoInterstitial: Int?
/// Init AATPubNativeOptions
/// - Parameter skipOffsetForHTMLInterstitial: minimum offset in seconds required before skipping an HTML Interstitial ad.
/// - Parameter skipOffsetForVideoInterstitial: minimum offset in seconds required before skipping an Video Interstitial ad.
@objc public init(skipOffsetForHTMLInterstitial: NSNumber? = nil, skipOffsetForVideoInterstitial: NSNumber? = nil)
}
@objc public class AATAdMobOptions: NSObject {
/// The maximum height for AdMob inline adaptive banners
public let inlineBannerMaxHeight: Int?
/// Init AATAdMobOptions
/// - Parameter inlineBannerMaxHeight: The maximum height for AdMob inline adaptive banners
public init(inlineBannerMaxHeight: Int)
}
@objc public class AATDFPOptions: NSObject {
public let inlineBannerMaxHeight: Int?
/// Init AATDFPOptions
/// - Parameter inlineBannerMaxHeight: The maximum height for DFP inline adaptive banners
@objc public init(inlineBannerMaxHeight: Int)
}
@objc public class AATDatonomyOptions: NSObject {
/// Datonomy API Key
public let datonomyAPIKey: String?
/// Init AATDatonomyOptions
/// - Parameter datonomyAPIKey: Datonomy API Key
@objc public init(datonomyAPIKey: String)
}
Fixes
Fix an issue where the "unrecognized bundleID" error wasn't being logged if the Gravite server didn't recognize the application bundle ID.
Fix an issue where
AATConfiguration
description wasn't logged properly.
Library Updates
Update pubnative to 2.20.0
3.4.0-beta1
2023-09-21
API Changes
[Important] AATKit will not use the info.plist configurations anymore. Instead, you can use the new
AATConfiguration.AATAdNetworkOptions
object while initialising AATKit.
let conf = AATConfiguration()
...
conf.adNetworksOptions = .init(appNexusOptions: .init(autoCloseTime: 10, supportNativeBanner: true),
feedAdOptions: .init(shutterColor: .blue, disableSpinner: true),
pubNativeOptions: .init(skipOffsetForHTMLInterstitial: 10,
skipOffsetForVideoInterstitial: 15),
adMobOptions: .init(inlineBannerMaxHeight: 50),
dfpOptions: .init(inlineBannerMaxHeight: 50))
...
AATSDK.initAATKit(with: conf)
@objc public class AATAdNetworksOptions : NSObject {
public var appNexusOptions: AATAppNexusOptions?
public var feedAdOptions: AATFeedAdOptions?
public var pubNativeOptions: AATPubNativeOptions?
public var adMobOptions: AATAdMobOptions?
public var dfpOptions: AATDFPOptions?
public init(appNexusOptions: AATAppNexusOptions? = nil, feedAdOptions: AATFeedAdOptions? = nil, pubNativeOptions: AATPubNativeOptions? = nil, adMobOptions: AATAdMobOptions? = nil, dfpOptions: AATDFPOptions? = nil)
}
@objc public class AATAppNexusOptions : NSObject {
/// a delay in seconds after which a full-screen ad will be dismissed, default value is nil.
public let autoCloseTime: Int?
/// a Boolean that describes if Banner Ad can serve a Native Ad, default is false.
public let supportNativeBanner: Bool
@objc public init(autoCloseTime: NSNumber? = nil, supportNativeBanner: Bool = false)
}
@objc public class AATFeedAdOptions: NSObject {
/// Desired UIColor to be used for shutter, default is nil.
public let shutterColor: UIColor?
/// Boolean that describes if spinner should be disabled, default is false.
public let disableSpinner: Bool
@objc public init(shutterColor: UIColor? = nil, disableSpinner: Bool = false)
}
@objc public class AATPubNativeOptions : NSObject {
public let skipOffsetForHTMLInterstitial: Int?
public let skipOffsetForVideoInterstitial: Int?
@objc public init(skipOffsetForHTMLInterstitial: NSNumber? = nil, skipOffsetForVideoInterstitial: NSNumber? = nil)
}
@objc public class AATAdMobOptions: NSObject {
public let inlineBannerMaxHeight: Int?
public init(inlineBannerMaxHeight: Int)
}
@objc public class AATDFPOptions: NSObject {
public let inlineBannerMaxHeight: Int?
@objc public init(inlineBannerMaxHeight: Int)
}
Remove the deprecated method
AATSDK.setInitialRules(:)
. Please useAATConfiguration.initialRules
instead.
Remove the deprecated method
setRuleCachingEnabled(:)
. Please useAATConfiguration.shouldCacheRules
instead.Introduce new public API
func isConsentOptIn() -> Bool
to check if consent is OptIn or not.Usage:
let optIn = AATSDK.isConsentOptIn()
.
Introduce a new public API
func getDebugInfoObject() -> AATDebugInfo?
for obtaining the debug information that will be presented if the shake debug screen is enabled.Usage:
let debugObject = AATSDK.getDebugInfoObject()
.
Setting the banner cache retry intervals to the
AATBannerCacheConfiguration
instead of the info.plistUsage:
let conf = AATBannerCacheConfiguration(placementName: "<PLACEMENT_NAME>", size: 5)
conf.minDelay = 10
bannerCache = AATSDK.createBannerCache(configuration: conf)
Publishers can pass the collapsible banner options (
AATCollapsibleBannerOptions
) to all placements instead of using the info.plist
@objc public class AATCollapsibleBannerOptions : NSObject {
internal let position: AATCollapsibleBannerPosition
internal let minDelay: Int
public init(position: AATCollapsibleBannerPosition = .top, minDelay: Int = 0)
}
@objc public enum AATCollapsibleBannerPosition : Int, RawRepresentable {
case top, bottom
}
(Requires iOS 13 and above) Introduce the new
AATAsyncInfeedBannerPlacement
that wraps theAATInfeedBannerPlacement
and supports the concurrency.
@available(iOS 13.0, *)
public protocol AATAsyncInfeedBannerPlacement: AATPlacement {
// MARK: Delegates
/// Set the placement delegate that will listen to ad loading and display events
var delegate: AATInfeedBannerPlacementDelegate? { get set }
/// Sets the placement statistics delegate
var statisticsDelegate: AATStatisticsDelegate? { get set }
/// Sets the placement impression delegate
var impressionDelegate: AATImpressionDelegate? { get set }
var collapsableBannerOptions: AATCollapsibleBannerOptions? { get set }
/// Request banner ad from the placement
/// - Parameter request: the ``AATBannerRequest`` to be used
/// - Returns: ``AATBannerPlacementWrapperView``
func requestAd(request: AATBannerRequest) async -> AATBannerPlacementWrapperView?
/// Manually Count an Ad Space
func countAdSpace()
}
(Requires iOS 13 and above) Introduce the new
AATAsyncNativeAdPlacement
that wraps theAATNativeAdPlacement
and supports the concurrency.
@available(iOS 13.0, *)
public protocol AATAsyncNativeAdPlacement: AATPlacement {
var delegate: AATAsyncNativePlacementDelegate? { get set }
var statisticsDelegate: AATStatisticsDelegate? { get set }
var impressionDelegate: AATImpressionDelegate? { get set }
var targetingInfo: [String: [String]]? { get set }
var contentTargetingUrl: String? { get set }
func reload() async -> AATNativeAdData?
func getNumberOfCurrentlyLoadingNativeAds() -> Int
func hasAd() -> Bool
func reportAdSpace() -> Bool
func isFrequencyCapReached() -> Bool
}
Improvements
Allow passing max height of inline adaptive Google banners (GAM and AdMob) using
AATAdNetworksOptions
passingAATAdMobOptions
orAATDFPOptions
instances.
let conf = AATConfiguration()
...
conf.adNetworksOptions = .init(adMobOptions: .init(inlineBannerMaxHeight: 50),
dfpOptions: .init(inlineBannerMaxHeight: 50))
...
AATSDK.initAATKit(with: conf)
AATKit now provides a completely new shake debug screen using a customised
UIViewController
. Publishers can customise it by using the new public APIfunc configureDebugScreen(configuration: AATDebugScreenConfiguration)
.
Let configurations = AATDebugScreenConfiguration(appLogo: UIImage(named: "<LOGO_IMAGE_NAME>"), title: "<YOUR_APP_NAME>")
AATSDK.configureDebugScreen(configuration: configurations)
@objc public class AATDebugScreenConfiguration : NSObject {
/// Create an ``AATDebugScreenConfiguration`` instance
/// - Parameter appLogo: application logo
/// - Parameter showBundleId: true to show bundle id
/// - Parameter showTestMode: true to show test mode data
/// - Parameter showLoadedAndLoadingAds: true to show loaded and loading ads
/// - Parameter showDisabledNetworks: true to show disabled ad networks
/// - Parameter showRemovedNetworkSDKs: true to show removed ad networks
/// - Parameter showDeviceType: true to show device type
@objc public init(appLogo: UIImage?, title: String?, showBundleId: Bool = true, showTestMode: Bool = true, showLoadedAndLoadingAds: Bool = true, showDisabledNetworks: Bool = true, showRemovedNetworkSDKs: Bool = true, showDeviceType: Bool = true, showExtraSDKs: Bool = true, showConsent: Bool = true, showIDFA: Bool = true)
}
New Ad Networks
Tappx SDK (version 4.1.0), supporting Banner, Fullscreen, and Rewarded Video formats.
Tappx is an optional ad network. To add it, add this line to your Podfile:
pod ‘AATKit/Tappx’
Library Updates
YOC to 4.1.0
3.3 Beta
3.3.0-beta7
2023-07-10
Improvements
All the public methods are logged now at debug level.
Library Updates
OgurySdk to 4.1.4
smaato-ios-sdk to 22.2.1
AmazonPublisherServicesSDK to 4.7.3
VungleAds to 7.0.1
GoogleMobileAds to 10.7.0
InMobiSDK to 10.5.6
IronSourceSDK to 7.3.1
AppLovinSDK to 11.10.1
UnityAds to 4.8.0
CriteoPublisherSdk to 5.0.0
Criteo now requires the minimum deployment target of iOS 12.
TeadsSDK to 5.0.27
Smart-Display-SDK to 7.21.0
AppNexusSDK to 8.6.0
Prebid to 2.1.2
SourcePoint to 7.2.0
Pubnative to 2.18.1
YOC to 3.2.1
MintegralAdSDK to 7.3.9
3.3.0-beta6
2023-06-27
API Changes
Introduce new method
AATSDK.isConsentOptIn()
, returning "consent opt-in status" returned by our server rules. Only returns meaningful information after the rules are downloaded.
Fixes
Fix an issue where AutoLoad banner placement auto-reloading was not resumed automatically after
AATSDK.controllerViewDidAppear(controller:)
call.
3.3.0-beta3
2023-06-16
Improvements
Introduce Google collapsible banners. The following steps are necessary to integrate collapsible banners:
Specify the collapsible banners position. Add the following to the Info.plist:
Key:
<PLACEMENT_NAME>.collapsiblePosition
Value:
top/bottom
Specify the frequency capping for collapsible banners. Add the following to the Info.plist:
Key:
<PLACEMENT_NAME>.minDelayBetweenCollapsibleBannersInSeconds
Value: Integer (type: Number). Please add 0 if you don't need to apply frequency capping on collapsible banners.
Library Updates
GoogleMobileAds SDK to v10.4.0
3.3.0-beta1
2023-06-09
NOTE The minimum ios target is now ios 11.0 and requires Xcode 14.3
API Changes
Introduce a new factory method for initializing the banner cache.
instead of
AATBannerCache(cacheConfiguration: configuration)
useAATSDK.createBannerCache(configuration: configuration)
.
Deprecate
AATSDK.setInitialRules(:)
. Please useAATConfiguration.initialRules
instead.Deprecate
AATSDK.setRuleCachingEnabled(:)
. Please useAATConfiguration.shouldCacheRules
instead.Introduce a new way to Opt-out from showing the CMP
AATManagedConsent can be initialized by passing a new parameter
showIfNeededSetting
let consent = AATManagedConsent(cmp: cmp, delegate: self, showIfNeededSetting: .always)
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.serverSideControl
: showing the CMP will be based on the dashboard configurations.
It has a default value of:
serverSideControl.
New Ad Networks
Datonomy SDK, for an overview of what Datonomy provides, please check their documentation.
Datonomy is an optional library, you can add it by adding this line
pod 'AATKit/
Datonomy'
to your Podfile.To add your Datonomy API key, add this key-value pair to your info.plist:
Key:
AATDatonomyApiKey
Value:
YOUR_DATONOMY_API_KEY
Mintegral SDK (version 7.2.9), supporting Banner, Fullscreen, and Rewarded Video formats.
Integrate the new CMP: SourcePoint (version 7.0.2).
You can add it by adding this line
pod 'AATKit/
SourcePoint'
to your Podfile.You can use it as follows:
import AATSourcePointCMPAdapter .... let configuration = AATConfiguration() let cmp = AATCMPSourcepoint(accountId: "YourAccountID", propertyId: "YourPropertyId", propertyName: "YourPropertyName", pmId: "YourPMId") consent = AATManagedConsent(cmp: cmp, delegate: self) // other AATKitConfigurations AATSDK.initAATKit(with: configuration)
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:
Improve logs formatting.
Add info-level logs in public APIs.
Always log
initAATKit(with configuration: AATConfiguration?)
andsetLogLevel(:)
methods.
Fixes
Fix an issue with the autoload banner placement where ad spaces were not counted properly in case of waterfall failure.
3.2 Beta
3.2.0-beta4
2023-05-12
Fixes
Fix an issue where fullscreen placements weren’t counting either clicks or viewable impressions.
3.2.0-beta3
2023-04-06
Fixes
Fix an issue with the reporting API request where the language parameter wasn't sent in the right format.
Fix an issue with rules skipping where some valid ad networks might be skipped.
3.2.0-beta2
2023-03-27
Fixes
Fix an issue with Google impression-level revenue data where the price was passed as the single impression price, not the CPM price.
3.2.0-beta1
2023-03-1
API Changes
Placements will pass themselves to
AATStatisticsDelegate
listener methods as a parameter called the placement of typeAATPlacement
. This parameter will let the delegates know which placement triggered the delegate method. The placement name can be checked by using the method:placement.getName()
.Changed APIs:
func AATKitCountedAdSpace(placement: AATPlacement?)
func AATKitCountedRequest(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedResponse(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedImpression(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedNetworkImpression(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedVImpression(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedClick(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedDirectDealImpression(placement: AATPlacement?, for network: AATAdNetwork)
func AATKitCountedMediationCycle(placement: AATPlacement?)
Placements will pass themselves to
AATImpressionDelegate
listener methods as a parameter called placement of typeAATPlacement
. This parameter will let the delegates know which placement triggered the delegate method. The placement name can be checked by using the method:placement.getName()
.Changed APIs:
func didCountImpression(placement: AATPlacement?, _ impression: AATImpression)
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.
Networks providing child-directed requests:
AdMmob
Google AdManager (DFP)
AdX
Digital Turbine (AdColony)
AppLovin
AppLovin MAX
Criteo SDK
IronSource
Verve (PubNative)
Smaato
Unity
Vungle
Networks that will be skipped:
Amazon HB
Xandr (AppNexus)
Bluestack (Madvertise)
Facebook
FeedAd
InMobi
Ogury
Equativ (SmartAdServer)
Teads
YOC
API:
public static func setIsChildDirected(_ isChildDirected: Bool)
Usage:
AATSDK.setIsChildDirected(true)
Provide impression-level revenue data via the
AATImpression
objectAdd
currencyCode
andprecision
properties to theAATImpression
object.If the ad network provides impression-level revenue data, AATKit will use this information during the AATImpression instantiation and pass it to AATImpressionDelegate via the
func didCountImpression(placement: AATPlacement?, _ impression: AATImpression)
callback. Otherwise, AATKit will detect and collect the impression-level information internally and provide it to the impression delegate via the samefunc didCountImpression(placement: AATPlacement?, _ impression: AATImpression)
callback.Currently, only Google Mobile Ads supports impression-level revenue data.
Introduce new banner placement type:
AATAutoLoadBannerPlacement
andAATAutoLoadMultiSizeBannerPlacement
which are based onAATBannerCache
. They are intended to replace bothAATStickyBannerPlacement
andAATMultiSizeBannerPlacement
hence, they have exactly the same functionality and provide the same APIs.Creating the placement:
Swift:
var placement = AATSDK.createAutoLoadBannerPlacement(name: "<PLACEMENT_NAME>", size: .banner320x50)
Objective-C:
id<AATStickyBannerPlacement> placement = [AATSDK createStickyBannerPlacementWithName:@"<PLACEMENT_NAME>" size:AATBannerPlacementSizeBanner300x50];
Public Interfaces:
AATAutoLoadBannerPlacement
@objc public protocol AATAutoLoadBannerPlacement: AATPlacement {
/// Set the placement delegate that will listen to ad loading and display events
var delegate: AATAutoLoadBannerPlacementDelegate? { get set }
/// Sets the placement statistics delegate
var statisticsDelegate: AATStatisticsDelegate? { get set }
/// Sets the placement impression delegate
var impressionDelegate: AATImpressionDelegate? { get set }
/// Sets the targeting information for the placement
var targetingInfo: [String: [String]]? { get set }
/// Sets the content targeting url for the placement.
var contentTargetingUrl: String? { get set }
/// Start the automatic reloading of the placement
func startAutoReload()
/// Stop the automatic reloading of the placement
func stopAutoReload()
/// Returns true if there is an ad loaded for given placement.
func hasAd() -> Bool
/// Returns placement view. Works only for banner placements.
func getPlacementView() -> UIView?
/// Sets placement default image. This image will be shown in placement when no ad is available.
func setDefaultImage(image: UIImage)
/// Sets gravity for ads that don't fill entire placement area. Works only for sticky banner placements.
func setBannerAlign(alignment: AATBannerAlign)
}
AATAutoLoadMultiSizeBannerPlacement
@objc public protocol AATAutoLoadMultiSizeBannerPlacement: AATPlacement {
/// Set the placement delegate that will listen to ad loading and display events
var delegate: AATAutoLoadMultiSizeBannerPlacementDelegate? { get set }
/// Sets the placement statistics delegate
var statisticsDelegate: AATStatisticsDelegate? { get set }
/// Sets the placement impression delegate
var impressionDelegate: AATImpressionDelegate? { get set }
/// Sets the targeting information for the placement
var targetingInfo: [String: [String]]? { get set }
/// Sets the content targeting url for the placement.
var contentTargetingUrl: String? { get set }
/// Start the automatic reloading of the placement
func startAutoReload()
/// Stop the automatic reloading of the placement
func stopAutoReload()
}
New Ad Networks
IronSource SDK (version 7.2.7), supporting Fullscreen and rewardedVideo formats.
You can add it by adding this line
pod 'AATKit/IronSource'
to your Podfile.
Improvements
Implement Google Mobile Ads Fluid banners.
Extend cached rules' lifetime.
Improve AATAdMobMediationAdapter logs.
Validate that all AATSDK public APIs are called from the main thread.
Throttle download rules request when failed.
Add internal custom timeout for Prebid requests (3.5 seconds).
Fixes
Fix an issue in the fullscreen placement where sometimes the clicks/vImp callbacks are not fired.
Fix an issue in the fullscreen placement where sometimes the loaded ad was set to nil while needed.
Fix an issue where NativeAd and Banner ads sometimes don't call the proper app pause/resume callbacks.
Library Updates
AppLovin to v11.7.1
Xandr (AppNexus) to 8.3.0
Bluestack to 4.1.8
GoogleMobileAds to v10.0.0
Note: GoogleMobileAds No longer serve ads to iOS 11. iOS 12 is required to retrieve ads. Keep supporting iOS 10.
GoogleMobileAdsMediationFacebook to 6.12.0.1
FeedAd to 1.5.3
InMobi to v10.5.3
Ogury to v4.0.0
Prebid to 2.0.8
Pubnative to 2.17.0
Smaato to 22.0.1
Equativ (SmartAd) to 7.20.0
UnityAds to 4.5.0
Vungle to 6.12.2
YOC to 3.1.1
TeadsSDK to v5.0.25
Criteo to 4.6.0
3.1 Beta
3.1.0-beta10
2022-11-30
Fixes
Fix an issue with sticky banners fill rate.
Fix some issues with internal ad loading.
3.1.0-beta7
2022-11-03
Fixes
Persist the debug log choice in the shake debug screen.
Fix a typo in the Pubnative interstitial skip offset key that should be set in the publishers’ info.plist.
Renamed from
AATKitPubnativeOffsetSecsVideoLInterstitial
toAATKitPubnativeOffsetSecsVideoInterstitial
We will keep supporting the key with the typo:
AATKitPubnativeOffsetSecsVideoLInterstitial
.
3.1.0-beta6
2022-10-28
Fixes
Include fixes from the stable version 3.0.11.
Fix an internal issue where the HyBid OMSDK library was not found.
3.1.0-beta5
2022-10-25
Fixes
Fix an issue that occurs when using the
alternativeBundleID
(From the stable version 3.0.10).
3.1.0-beta4
2022-10-21
Fixes
Fix an internal issue with consent handling.
Updates
AppLovin SDK to v11.5.2
AppNexus SDK to v8.1.0
AmazonHB SDK to v4.5.5
Bluestack SDK to v4.1.3
GoogleMobileAds SDK to v9.11.0
GoogleMobileAdsMediationFacebook SDK to v6.11.2.0
FeedAd SDK to v1.5.0
InMobi SDK to v10.1.0
Prebid SDK to v2.0.3
Pubnative SDK to v2.16.0
Smaato SDK to v21.7.7
SmartAd SDK to v7.19.0
UnityAds SDK to v4.4.1
Vungle SDK to v6.12.0
YOC SDK to v3.0.0
3.1.0-beta3
2022-10-12
Fixes
Fix an internal issue with rules validation (From the stable version 3.0.9).
3.1.0-beta2
2022-10-11
Fixes
Fix an issue with native ads impressions tracking (From the stable version 3.0.8).
3.1.0-beta1
2022-10-10
Changes
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 delegate methods as a parameter called
AATPlacement
to their listeners. This parameter will enable the listeners to know which placement triggered the delegate method using this method:placement.getName()
.Changed APIs:
func aatHaveAd(placement: AATPlacement)
func aatNoAd(placement: AATPlacement)
func aatAdCurrentlyDisplayed(placement: AATPlacement)
func aatResumeAfterAd(placement: AATPlacement)
func aatHaveAdWithBannerView(placement: AATPlacement, bannerView: AATBannerPlacementWrapperView)
func aatUserEarnedIncentive(placement: AATPlacement, aatReward: AATReward)
3.0 Beta
3.0.0-beta19
2022-08-11
Changes
Report new KPI "mediationcycles".
Enable Ad Networks SDKs debug logs by server config.
Merging server-side keywords with the SDK global keywords.
Calling ‘controllerViewWillAppear’ and ‘controllerViewWillDisappear’ can now be called on AATSDK directly.
Fixes
Fix an issue in Fullscreen Ad that caused some AdNetwork events not to be called
3.0.0-beta18
2022-07-25
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), informing about placement events like ad load, pause for ad etc.
Some method names have changed for improved consistency across platforms.
The name of the public interface has changed from
AATKit
toAATSDK
.AATKit 3 is M1 compatible, hence ad networks not supporting M1 are removed until they support M1:
ironSource
To learn more about the changes, please refer to our AATKit 3 Migration Guide.
Last updated