AATKit iOS Integration
Release Notes
  • Start
    • Setup
      • Minimum iOS Version
      • Cocoapods
      • Swift Package Manager
      • AATKit Reporting
      • App Transport Security (ATS)
      • SKAdNetwork
    • Initialization
    • Consent
      • General Handling
      • Managed Consent
        • Google CMP
        • Sourcepoint CMP
        • SFBX (AppConsent) CMP
      • Vendor Consent
      • Simple Consent
    • Plugins documentation
    • Additional Information
  • Formats
    • Introduction
    • Banner
      • Auto Load Banner
      • Multi-Size Auto Load Banner
      • Banner Cache
      • Infeed Banner
      • Asynchronous Infeed Banner
      • Sticky Banner
      • Multi-Size Banner
    • Fullscreen (Interstitial)
    • AppOpen (Google)
    • Rewarded Video
      • Server-Side Verification (SSV)
    • Native Ad
      • Basic Integration
      • Asynchronous Basic Integration
      • Network Specifics
        • Native Ads: Google
        • Native Ads: Applovin
  • Ad Networks
    • Customize Ad Networks
    • Privacy Requirements
    • Google Mobile Ads SDK
    • AppNexus Custom Interstitial Auto Dismiss Delay
    • FeedAd Banner Options
    • AmazonHB
  • Advanced
    • Targeting
      • Key-Value Targeting
      • User Targeting
      • Content Targeting URL
    • Frequency Capping
    • Advanced Delegates
      • Reports Delegate
      • Impression Delegate (ILRD)
      • Statistics Delegate
    • AATKit's Size
    • Ad Space and Fill Rate
    • Shake Debug
    • Publisher Provided ID
    • Child-directed Support
    • Disabling Ad Networks
    • Geo Tracking
    • Ad Quality
    • Creatives History
  • Other
    • AdMob Custom Events
    • Datonomy
    • Reference
      • Classes
        • AATConfiguration
        • AATRuntimeConfiguration
        • AATManagedConsent
        • AATVendorConsent
        • AATSimpleConsent
        • AATAdInfo
        • AATBannerConfiguration
        • AATBannerRequest
        • AATBannerCacheConfiguration
        • AATBannerAlign
        • AATPlacementHistoryInfo
        • AATReward
        • AATRewardedAdSSVInfo
        • AATNativeAdRating
        • AATImpression
        • AATPriceInfo
        • AATAdNetworksOptions
          • AATAppNexusOptions
          • AATFeedAdOptions
          • AATAdMobOptions
          • AATDFPOptions
          • AATDatonomyOptions
        • AATDebugInfo
        • AATDebugScreenConfiguration
        • AATUserTargeting
        • AATCollapsibleBannerOptions
      • Protocols
        • AATDelegate
        • AATManagedConsentDelegate
        • AATVendorConsentDelegate
        • AATPlacement
        • AATStickyBannerPlacement
        • AATStickyBannerPlacementDelegate
        • AATMultiSizeBannerPlacement
        • AATMultiSizeBannerPlacementDelegate
        • AATInfeedBannerPlacement
        • AATInfeedBannerPlacementDelegate
        • AATAsyncInfeedBannerPlacement
        • AATBannerRequestDelegate
        • AATBannerCache
        • AATBannerCacheDelegate
        • AATBannerCacheStatusDelegate
        • AATAutoLoadBannerPlacement
        • AATAutoLoadBannerPlacementDelegate
        • AATAutoLoadMultiSizeBannerPlacement
        • AATAutoLoadMultiSizeBannerPlacementDelegate
        • AATFullscreenPlacement
        • AATFullscreenPlacementDelegate
        • AATAppOpenAdPlacement
        • AATAppOpenPlacementDelegate
        • AATRewardedVideoPlacement
        • AATRewardedVideoPlacementDelegate
        • AATNativeAdPlacement
        • AATNativePlacementDelegate
        • AATAsyncNativeAdPlacement
        • AATNativeAdData
        • AATReportsDelegate
        • AATImpressionDelegate
        • AATStatisticsDelegate
      • Enumerations
        • AATAdNetwork
        • AATGender
        • AATLogLevel
        • AATManagedConsentState
        • NonIABConsent
        • AATBannerPlacementSize
        • AATBannerSize
        • HorizontalAlign
        • VerticalAlign
        • AATMediationType
        • AATImpressionPricePrecisionType
  • Samples
Powered by GitBook
On this page
  • Create Placement
  • Listen to Callbacks (Optional)
  • Request Ad
  • Complete Code Example
  1. Formats
  2. Banner

Asynchronous Infeed Banner

Last updated 6 months ago

This placement requires iOS 13 and above.

Asynchronous Infeed banner placements wrap the providing the same functionality but supporting Swift Concurrency.

Create Placement

To create an instance of , use the following API:

let configuration = AATBannerConfiguration()
let placement = AATSDK.createAsyncInfeedBannerPlacement(name: "<PLACEMENT_NAME>", configuration: configuration)
AATBannerConfiguration *configuration = [[AATBannerConfiguration alloc] init];
id <AATAsyncInfeedBannerPlacement> bannerPlacement = [AATSDK createAsyncInfeedBannerPlacement:@"<PLACEMENT_NAME>" configuration:configuration];

AATBannerConfiguration

See the infeed .

Listen to Callbacks (Optional)

See the .

Request Ad

The async infeed banner placement uses swift concurrency. To request a banner, use the default initializer that takes an instance implementing as a parameter.

Configure AATBannerRequest

See the .

Perform Request

You can request multiple AATBannerRequest in parallel (i.e. the next one, before the previous one was completed).

Task {
    let request = AATBannerRequest(delegate: self)
    guard let adView = await bannerPlacement?.requestAd(request: request) else {
        return
    }
    // Display the adView
}
AATBannerRequest *request = [[AATBannerRequest alloc] initWithDelegate:self];
[self.bannerPlacement requestAdWithRequest:request
                                   completion:^(AATBannerPlacementWrapperView * _Nullable bannerView, AATBannerRequestError * _Nullable error) {
    if (error) {
      // Handle Error
      return;
    }
    // Handle banner display
}];

Complete Code Example

class ViewController: UIViewController {
    // Create the placement
    var placement: AATInfeedBannerPlacement?
 
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        // [IMPORTANT] Notify AATKit about the currently active view controller
        AATSDK.controllerViewDidAppear(controller: self)
        
        let configuration = AATBannerConfiguration()
        placement = AATSDK.createInfeedBannerPlacement(name: "<PLACEMENT_NAME>", configuration: configuration)
        
        // Set placement delegate to listen to the callbacks
        placement.delegate = self
        
        // Create the banner request instance
        let request = AATBannerRequest(delegate: self)
        // Configure request banner sizes
        request.setRequestBannerSizes(sizes: Set([.banner320x53, .banner300x250]))
        // Configure request targeting information
        request.contentTargetingUrl = "http://example.com/similar/content"
        // Configure request content targeting URL
        request.targetingInformation = ["key": ["value"]]
        // Perform the request
        Task {
            let request = AATBannerRequest(delegate: self)
            guard let adView = await bannerPlacement?.requestAd(request: request) else {
                return
            }
            // Display the adView
        }
        
    }
    
    override func viewWillDisappear(_ animated: Bool) {
	super.viewWillDisappear(animated)
	// [IMPORTANT] Remove the currently active view controller
        AATSDK.controllerViewWillDisappear()
    }
}

// MARK: AATInfeedBannerPlacementDelegate
extension ViewController: AATInfeedBannerPlacementDelegate {
    func aatPauseForAd(placement: AATPlacement) {
        // Ad has been displayed on the screen
    }

    func aatResumeAfterAd(placement: AATPlacement) {
        // Back to the app after clicking on the ad
    }
}

// MARK: AATBannerRequestDelegate
extension ViewController: AATBannerRequestDelegate {
	func shouldUseTargeting(for request: AATBannerRequest, network: AATAdNetwork) -> Bool {
		return true
	}
}
@interface ViewController () <AATInfeedBannerPlacementDelegate, AATBannerRequestDelegate>
@property id<AATAsyncInfeedBannerPlacement> placement;
@end

@implementation ViewController
- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    
    // [IMPORTANT] Notify AATKit about the currently active view controller
    [AATSDK controllerViewDidAppearWithController:self];
    
    // Create the placement
    AATBannerConfiguration *configuration = [[AATBannerConfiguration alloc] init];
    return [AATSDK createAsyncInfeedBannerPlacement:@"<PLACEMENT_NAME>" configuration:configuration];
    
    // Set placement delegate to listen to the callbacks
    self.placement.delegate = self;
    
    // Create the banner request instance
    AATBannerRequest *request = [[AATBannerRequest alloc] initWithDelegate:self];
    // Configure request banner sizes
    NSSet *sizes = [[NSSet alloc] initWithArray:@[@(AATBannerSizeBanner320x53), @(AATBannerSizeBanner300x250), @(AATBannerSizeBanner320x100)]];
    [request setRequestBannerSizes: sizes];
    // Configure request targeting information
    request.targetingInformation = @{@"Key": @[@"value"]};
    // Configure request content targeting URL
    request.contentTargetingUrl = @"http://example.com/similar/content";
    // Perform the request
    [self.placement requestAdWithRequest: request
                    completion:^(AATBannerPlacementWrapperView * _Nullable bannerView, AATBannerRequestError * _Nullable error) {
        if (error) {
            // Handle Error
            return;
        }
        // Handle banner display
    }];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    // [IMPORTANT] Remove the currently active view controller
    [AATSDK controllerViewWillDisappear];
}

#pragma mark - AATInfeedBannerPlacementDelegate
- (void)aatPauseForAdWithPlacement:(id<AATPlacement> _Nonnull)placement {
    // Ad has been displayed on the screen
}

- (void)aatResumeAfterAdWithPlacement:(id<AATPlacement>)placement {
    // Back to the app after clicking on the ad
}

#pragma mark - AATBannerRequestDelegate
- (BOOL)shouldUseTargetingFor:(AATBannerRequest * _Nonnull)request network:(enum AATAdNetwork)network {
    return YES;
}
@end
Infeed banner placement
AATAsyncInfeedBannerPlacement
AATBannerRequest
AATBannerRequestDelegate
banner configuration documentation
infeed callbacks documentation
infeed banner request configuration