Infeed banner placements are designed to serve ads in scrollable feeds (nevertheless, they can also be used in all other scenarios). This includes giving the app complete control over the lifecycle of a specific banner impression. The app can load an ad with a specific configuration and gets notified about the outcome of that specific load request (successful, failure). Hence, the usage of an infeed banner differs from using sticky banners.
AATBannerConfiguration can be configured with the number of workers and whether manual ad space counting is enabled.
Manual ad space counting (Please refer to our article about Ad Spaces.)
false (default): infeed banner placement counts an Ad Space every time the app requests an ad from it. Shall only be used, if the app is presenting banners immediately (= not caching them for later use).
true: the app needs to notify the infeed banner placement about every Ad Space it creates (= placement doesn’t count Ad Spaces itself). This is especially useful if the app implements its own banner caching (e.g. in order to create a smooth user experience for the feed). In this case, the app should notify the placement about an Ad Space only if the feed cell intended for presenting a banner is reaching the visible area of the screen (regardless of whether an ad was available for it or not). If this sounds interesting to you, we strongly advise visiting our chapter about AATKit’s Banner Cache.
To manually count an ad space, call the following AATInfeedBannerPlacement API:
// call it when Infeed Ad is about to be displayed
placement.countAdSpace()
// call it when Infeed Ad is about to be displayed
[self.placement countAdSpace];
Number of workers
Default: 3
Defines, how many ads can be loaded in parallel. Higher numbers will result in faster ad delivery but also in more CPU and network traffic consumption
The infeed banner placement uses the request completion closure instead of delegate methods like other placements. To request a banner, use the AATBannerRequest default initializer that takes an instance implementing AATBannerRequestDelegate as a parameter.
There might be pending ad requests when the user navigates to a different view controller. To keep the existing lifecycle of the view controller, you need to cancel any pending requests.
placement.cancel(request: request)
[self.placement cancelWithRequest:request];
Ad Info
After loading a banner view, you can access the loaded ad information by accessing the adInfo property of the loaded banner view:
bannerPlacement?.requestAd(request: request) { [weak self] bannerView, error in
guard let self = self else { return }
if let adView = bannerView {
let adInfo = adView.adInfo
// Display the ad view
}
}