Banner Ads
After creating placements in the DT Console, add the following code snippets in the chosen context of your app. Access the Placement ID by using the copy button next to the placement name. For more information about creating placements in the DT Console, read here.
Banners are rectangle ads appearing either at the top or bottom of the screen when the user interacts with your app. The user can view them but cannot dismiss them. Banners are automatically refreshed by the DT FairBid SDK after 20 seconds.
The DT FairBid SDK refreshes banners automatically. To avoid discrepancies between Digital Turbine and 3rd-party network reporting, disable any automatic or manual banner refresh settings on 3rd-party network SDKs.
Showing a Banner
To show a banner, implement the code below:
// in implementation of FYBBannerDelegate protocol
- (void)bannerDidLoad:(FYBBannerAdView *)banner impressionData:(FYBImpressionData *)impressionData {
[self.myView addSubview:banner];
banner.center = CGPointMake(self.myView.bounds.size.width / 2, self.bounds.size.height / 2);
}
extension MyViewController: FYBBannerDelegate {
func bannerDidLoad(_ banner: FYBBannerAdView, impressionData: FYBImpressionData)
{
// set up the banner constraints
myView.addSubview(banner)
banner.center = CGPoint(x: myView.frame.width / 2, y: myView.center.y)
}
…
}
Hiding the Banner
If you want to hide the banner temporarily, implement the code below:
NSString *placementId = @"1234"; [FYBBanner hide:placementId];
let placementId = "1234" FYBBanner.hide(placementId)
Destroying the Banner
Once you have decided that you no longer want to use the banner, you must destroy it.
To destroy the banner, implement the code below:
NSString *placementId = @"1234"; [FYBBanner destroy:placementId];
let placementId = "1234" FYBBanner.destroy(placementId)
Loading a Banner
Important
This is only recommended if FairBid is not your main mediation platform.
You can pre-load a banner to review its pricing and other details if you want to use FairBid with other mediations or demand sources. This allows you to compare it against banners from other demand sources outside our platform before showing it.
You are responsible for adding FYBBannerAdView instance to your view hierarchy. This FYBBannerAdView instance is available on - bannerDidLoad:impressionData: callback
To pre-load a banner, implement the code below:
#import <FairBidSDK/FairBid.h>
/// 1. Assign FYBBannerDelegate instance to handle banner events
FYBBanner.delegate = self;
/// 2. Define the banner placement ID
/// Replace banner placementId with your actual banner placement id
NSString *placementId = <#banner placementId#>;
/// 3. Initialize a new FYBBannerOptions instance with a specified placement ID and size.
/// FYBBannerSizeSmart automatically adjusts the banner size based on the device's screen width.
FYBBannerOptions *bannerOptions = [[FYBBannerOptions alloc] initWithPlacementId:placementId size:FYBBannerSizeSmart];
/// 4. Request to load a banner ad with the specified options. This method fetches the banner creative but does not show it.
[FYBBanner requestWithOptions:bannerOptions];
/// 1. Assign FYBBannerDelegate instance to handle banner events
FYBBanner.delegate = self
/// 2. Define the banner placement ID
/// Replace banner placementId with your actual banner placement id
let placementId = <#banner placementId#>
/// 3. Initialize a new FYBBannerOptions instance with a specified placement ID and size.
///FYBBannerSizeSmart automatically adjusts the banner size based on the device's screen width.
let bannerOptions = FYBBannerOptions(placementId: placementId, size: .smart)
/// 4. Request to load a banner ad with the specified options. This method fetches the banner creative but does not show it.
FYBBanner.request(with: bannerOptions)
Adaptive Banners
By enabling the adaptive banner feature, you can receive the best banner size based on the ad width and screen size. This feature is currently supported by Google AdMob, Google Bidding, and Google Ad Manager only. This feature is disabled by default.
Networks that support adaptive banners will return ads with the best-fit height based on your banner size. Other networks will continue to deliver banners according to the specified ad size.
To use this feature, add the "adaptive" flag when defining your banner size using the code below:
NSString *placementId = @"12345";
FYBBannerOptions *options = [[FYBBannerOptions alloc] initWithPlacementId:placementId position:FYBBannerAdViewPositionTop];
options.adaptive = YES;
[FYBBanner showBannerInView:view options:options];
let view: UIView = parent!.navigationController!.tabBarController!.view
let placementId = "12345"
let options = FYBBannerOptions(placementId: placementId, position: .bottom)
options.adaptive = true
FYBBanner.show(in: view, options: options)
Adding Callbacks
The callback code below is required for the SDK to properly track the activity of your ad.
#import <FairBidSDK/FairBid.h>
@interface MyBannerDelegate : NSObject
@end
@implementation MyBannerDelegate
- (void)bannerDidLoad:(FYBBannerAdView *)banner impressionData:(FYBImpressionData *)impressionData {
// Called when an ad is loaded
}
- (void)bannerDidFailToLoad:(NSString *)placementId withError:(NSError *)error {
// Called when an error arises when loading an ad
}
- (void)bannerDidShow:(FYBBannerAdView *)banner impressionData:(FYBImpressionData *)impressionData {
// Called when banner shows up
}
- (void)bannerDidClick:(FYBBannerAdView *)banner {
// Called when banner is clicked
}
- (void)bannerWillPresentModalView:(FYBBannerAdView *)banner {
// Called when banner presents modal view
}
- (void)bannerDidDismissModalView:(FYBBannerAdView *)banner {
// Called when banner hides presented modal view
}
- (void)bannerWillLeaveApplication:(FYBBannerAdView *)banner {
// Called after banner redirects to other application
}
- (void)banner:(FYBBannerAdView *)banner didResizeToFrame:(CGRect)frame {
// Called after banner changes its size to desired frame
}
- (void)bannerWillRequest:(NSString *)placementId withRequestId:(NSString *)requestId {
// Called when a banner is going to be requested.
}
@end
class MyBannerDelegate: NSObject, FYBBannerDelegate {
func bannerDidLoad(_ banner: FYBBannerAdView, impressionData: FYBImpressionData) {}
func bannerDidFail(toLoad placementId: String,
withError error: Error) {}
func bannerDidShow(_ banner: FYBBannerAdView, impressionData: FYBImpressionData) {}
func bannerDidClick(_ banner: FYBBannerAdView){}
func bannerWillPresentModalView(_ banner: FYBBannerAdView) {}
func bannerDidDismissModalView(_ banner: FYBBannerAdView) {}
func bannerWillLeaveApplication(_ banner: FYBBannerAdView) {}
func banner(_ banner: FYBBannerAdView, didResizeToFrame frame: CGRect) {}
func bannerWillRequest(_ placementId: String, withRequestId requestId: String) {}
}
Interstitial Ads
After creating placements in the DT Console, add the following code snippets in the chosen context of your app. Access the Placement ID by using the copy button next to the placement name. For more information about creating placements in the DT Console, read here.
Interstitials are either static or video ads presented before, during or after the user interacts with your app. The user can view and then immediately dismiss them. This is a non-rewarded format for the user.
The speed and stability of users internet connections may vary. It is highly recommended to fetch as much in advance of showing an ad as possible. This helps to ensure that all necessary assets are downloaded. For example, you may want to fetch an ad when a level starts, or after a previous ad has been shown.
Making the Request
Below is an example of making a request for an Intersitial.
#import <FairBidSDK/FairBid.h>
FYBInterstitial.delegate = [[MyInterstitialDelegate alloc] init];
NSString *placementId = @"1234";
[FYBInterstitial request:placementId];
FYBInterstitial.delegate = MyInterstitialDelegate()
let placementId = "1234"
FYBInterstitial.request(placementId)
Adding Callbacks
The callback code below is required for the SDK to properly track the activity of your ad
#import <FairBidSDK/FairBid.h>
@interface MyInterstitialDelegate : NSObject
@end
@implementation MyInterstitialDelegate
- (void)interstitialIsAvailable:(NSString *)placementId {
// Called when an Interstitial from placement becomes available
}
- (void)interstitialIsUnavailable:(NSString *)placementId {
// Called when an Interstitial from placement becomes unavailable
}
- (void)interstitialDidShow:(NSString *)placementId impressionData:(FYBImpressionData *)impressionData {
// Called when an Interstitial from placement shows up. In case the ad is a video, audio play will start here.
}
- (void)interstitialDidFailToShow:(NSString *)placementId withError:(NSError *)error impressionData:(FYBImpressionData *)impressionData {
// Called when an error arises when showing an Interstitial from placement
}
- (void)interstitialDidClick:(NSString *)placementId {
// Called when an Interstitial from placement is clicked
}
- (void)interstitialDidDismiss:(NSString *)placementId {
// Called when an Interstitial from placement hides. In case the ad is a video, audio play will stop here.
}
- (void)interstitialWillRequest:(NSString *)placementId withRequestId:(NSString *)requestId {
// Called when an Interstitial is going to be requested.
}
@end.
class MyInterstitialDelegate: NSObject, FYBInterstitialDelegate {
func interstitialIsAvailable(_ placementId: String) {}
func interstitialIsUnavailable(_ placementId: String) {}
func interstitialDidShow(_ placementId: String, impressionData: FYBImpressionData) {}
func interstitialDidFail(toShow placementId: String, withError error: Error, impressionData: FYBImpressionData) {}
func interstitialDidClick(_ placementId: String) {}
func interstitialDidDismiss(_ placementId: String) {}
func interstitialWillRequest(_ placementId: String, withRequestId requestId: String) {}
}
Example: Showing an Ad
The following example checks to see if a placement is available and if it is, uses the show request to display the ad.
NSString *placementId = @"1234";
if ([FYBInterstitial isAvailable:placementId]) {
[FYBInterstitial show:placementId];
}
if ([FYBInterstitial isAvailable:placementId]) {
FYBShowOptions *showOptions = [FYBShowOptions new];
showOptions.viewController = self.myViewController;
[FYBInterstitial show:placementId options:showOptions];
}
let placementId = "1234"
if (FYBInterstitial.isAvailable(placementId)) {
FYBInterstitial.show("placementId")
}
if (FYBInterstitial.isAvailable(placementId)) {
let showOptions = FYBShowOptions()
showOptions.viewController = self.myViewController
FYBInterstitial.show(placementId, options: showOptions)
}
Rewarded Ads
After creating placements in the DT Console, add the following code snippets in the chosen context of your app. Access the Placement ID by using the copy button next to the placement name. For more information about creating placements in the DT Console, read here.
Rewarded ads are an engaging ad format that shows a short video ad to the user and in exchange the user will earn a reward. The user must consent and watch the video completely through to the end in order to earn the reward.
The speed and stability of users internet connections may vary. It is highly recommended to fetch as far in advance of showing an ad as possible. This helps to ensure that all necessary assets are downloaded. For example, you may want to fetch an ad when a level starts, or after a previous ad has been shown.
Making the Request
The following example shows how to import the Rewarded class, followed by making a request to display the Rewarded ads.
#import <FairBidSDK/FairBid.h>
FYBRewarded.delegate = [[MyRewardedDelegate alloc] init];
NSString *placementId = @"1234";
[FYBRewarded request:placementId];
FYBRewarded.delegate = MyRewardedDelegate()
let placementId = "1234"
FYBRewarded.request(placementId)
Adding Callbacks
The callback code below is required for SDK to properly track the activity of your ad
#import <FairBidSDK/FairBid.h>
@interface MyRewardedDelegate : NSObject
@end
@implementation MyRewardedDelegate
- (void)rewardedIsAvailable:(NSString *)placementId {
// Called when a rewarded ad from placement becomes available
}
- (void)rewardedIsUnavailable:(NSString *)placementId {
// Called when a rewarded ad from placement becomes unavailable
}
- (void)rewardedDidShow:(NSString *)placementId impressionData:(FYBImpressionData *)impressionData {
// Called when a rewarded ad from placement shows up. Audio play will start here.
}
- (void)rewardedDidFailToShow:(NSString *)placementId withError:(NSError *)error impressionData:(FYBImpressionData *)impressionData {
// Called when an error arises when showing a rewarded ad from placement
}
- (void)rewardedDidClick:(NSString *)placementId {
// Called when a rewarded ad from placement is clicked
}
- (void)rewardedDidDismiss:(NSString *)placementId {
// Called when a rewarded ad from placement hides. Audio play will stop here.
}
- (void)rewardedDidComplete:(NSString *)placementId userRewarded:(BOOL)userRewarded {
// Called when a rewarded ad finishes playing
}
- (void)rewardedWillRequest:(NSString *)placementId withRequestId:(NSString *)requestId {
// Called when a rewarded ad is going to be requested.
}
@end
class MyRewardedDelegate: NSObject, FYBRewardedDelegate {
func rewardedIsAvailable(_ placementName: String) {}
func rewardedIsUnavailable(_ placementName: String) {}
func rewardedDidShow(_ placementName: String, impressionData: FYBImpressionData) {}
func rewardedDidFail(toShow placementName: String, withError error: Error, impressionData: FYBImpressionData) {}
func rewardedDidClick(_ placementName: String) {}
func rewardedDidComplete(_ placementName: String, userRewarded: Bool) {}
func rewardedDidDismiss(_ placementName: String) {}
func rewardedWillRequest(_ placementId: String, withRequestId requestId: String) {}
}
Example: Showing an Ad
The following example checks to see if a placement is available and if it is, uses the show request to display the ad.
NSString *placementId = @"1234";
if ([FYBRewarded isAvailable:placementId]) {
[FYBRewarded show:placementId];
}
let placementId = "1234"
if (FYBRewarded.isAvailable(placementId)) {
FYBRewarded.show(placementId)
}
Server Side Rewarding
For details on configuring Server Side Rewarding, click here.
Medium Rectangle Ads
After creating placements in the DT Console, add the following code snippets in the chosen context of your app. Access the Placement ID by using the copy button next to the placement name. For more information about creating placements in the DT Console, read here.
Medium Rectangle (MREC) ads are 300x250 sized ads, serving both static and video, and positioned within editorial content of the app. There is no close button on MREC ads, and they are not skippable. Similar to Banner ads, MREC ads are refreshed according to a set refresh rate of between 10-120 seconds.
MREC Ads are available from FairBid SDK version 3.33.1.
Making the Request
Implement the code below to request an MREC:
#import <FairBidSDK/FairBid.h>
FYBBanner.delegate = [[MyBannerDelegate alloc] init];
NSString *placementId = @"1234";
FYBBannerOptions *bannerOptions = [[FYBBannerOptions alloc] initWithPlacementId:@"1234" size:FYBBannerSizeMREC];
[FYBBanner requestWithOptions:bannerOptions];
FYBBanner.delegate = MyBannerDelegate()
let bannerOptions = FYBBannerOptions(placementId: "1234", size: .MREC)
FYBBanner.request(with: options)
Showing an MREC
To show an MREC ad, display the view received in the bannerDidLoad:impressionData:
, that’s part of FYBBannerDelegate
protocol.
// in implementation of FYBBannerDelegate protocol
- (void)bannerDidLoad:(FYBBannerAdView *)banner impressionData:(FYBImpressionData *)impressionData {
[self.myView addSubview:banner];
banner.center = CGPointMake(self.myView.bounds.size.width / 2, self.bounds.size.height / 2);
}
extension MyViewController: FYBBannerDelegate {
func bannerDidLoad(_ banner: FYBBannerAdView, impressionData: FYBImpressionData)
{
// set up the MREC banner constraints
myView.addSubview(banner)
banner.center = CGPoint(x: myView.frame.width / 2, y: myView.center.y)
}
…
}