Interstitial Ads
Ad Request​
Placement​
Create placement from AdFormat with your parameters:
- Swift
- Objective-C
let placement = try? BidMachineSdk.shared.placement(.intersitial) {
$0.withPlacementId("")
$0.withCustomParameters([String:Any]())
}
NSError *error = nil;
BidMachinePlacement *placement = [BidMachineSdk.shared placement:BidMachineAdFormat.interstitial
error:&error
builder:^(id<BidMachinePlacementBuilderProtocol> _Nonnull builder) {
[builder withPlacementId:@""];
[builder withCustomParameters:@{}];
}];
| Parameter | Type | Description |
|---|---|---|
placementId | String | Placement ID |
customParameters | [String: Any] / NSDictionary | Passed directly to the server |
AdFormat​
The placement format is defined by static properties of the AdFormat class:
- Swift
- Objective-C
@objc(BidMachineAdFormat)
final public class AdFormat : NSObject {
@objc public static var interstitial: BidMachine.AdFormat { get }
@objc public static var interstitialStatic: BidMachine.AdFormat { get }
@objc public static var interstitialVideo: BidMachine.AdFormat { get }
}
@interface BidMachineAdFormat (SWIFT_EXTENSION(BidMachine))
+ (BidMachineAdFormat * _Nonnull)interstitial;
+ (BidMachineAdFormat * _Nonnull)interstitialStatic;
+ (BidMachineAdFormat * _Nonnull)interstitialVideo;
@end
Available interstitial formats​
| Format | Description |
|---|---|
interstitial | Combines both VAST (video) and MRAID (static) formats |
interstitialVideo | VAST video ads only |
interstitialStatic | MRAID static ads only |
General Request​
Auction request is used to set bidding parameters: The request is created with a special placement and your parameters
- Swift
- Objective-C
let request = BidMachineSdk.shared.auctionRequest(placement: placement) {
$0.withUnitConfigurations([BidMachineUnitConfiguration]())
$0.appendPriceFloor(Double(10), UUID().uuidString)
}
BidMachineAuctionRequest *request = [[BidMachineSdk shared] auctionRequestWithPlacement:placement builder: ^(id<BidMachineAuctionRequestBuilderProtocol> _Nonnull builder) {
[builder withUnitConfigurations:@[]];
[builder appendPriceFloor:10.0 identifier:[[NSUUID UUID] UUIDString]];
}];
| Parameter | Type | Description |
|---|---|---|
unitConfigurations | [BidMachineUnitConfiguration] | Header bidding unit configurations |
priceFloor | (Double, String) | Price floor (value and identifier) |
Client Bidding Request​
Bid Token​
With S2S integration, you will need a token that you need to transfer in the request. To get a token, you can use method:
- Swift
- Objective-C
BidMachineSdk.shared.token(placement: placement) { token in }
[BidMachineSdk.shared tokenWithPlacement:placement completion:^(NSString *token) {
}];
Bid Payload​
After completing the server-side auction, you will receive a Base64-encoded payload string, which must be passed as a parameter to the AuctionRequest.
- Swift
- Objective-C
let request = BidMachineSdk.shared.auctionRequest(placement: placement) {
$0.withPayload("")
}
BidMachineAuctionRequest *request = [[BidMachineSdk shared] auctionRequestWithPlacement:placement builder: ^(id<BidMachineAuctionRequestBuilderProtocol> _Nonnull builder) {
[builder withPayload:@""];
}];
| Parameter | Type | Description |
|---|---|---|
payload | String | Custom BidMachine payload string |
Ad Display​
The ad object is used to download and display ads.
Prepare the ad object​
Request an ad using your auction request:
- Swift
- Objective-C
BidMachineSdk.shared.interstitial(request: request) { [weak self] ad, error in
guard let self else { return }
self.interstitial = ad
}
__weak typeof(self) weakSelf = self;
[[BidMachineSdk shared] interstitialWithRequest:request
completion:^(BidMachineInterstitial *ad, NSError * _Nullable error) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
strongSelf.interstitial = ad;
}];
The prepared ad contains auctionInfo and requestInfo.
The auctionInfo contains information about the auction, such as the winning bidder, price, and other relevant details.
The auctionInfo is described here.
Delegate​
Subscribe to ad events:
- Swift
- Objective-C
ad.delegate = self
ad.delegate = self;
Implement BidMachineAdDelegate methods:
- Swift
- Objective-C
func didLoadAd(_ ad: BidMachineAdProtocol) {}
func didFailLoadAd(_ ad: BidMachineAdProtocol, _ error: Error) {}
func didPresentAd(_ ad: BidMachineAdProtocol) {}
func didFailPresentAd(_ ad: BidMachineAdProtocol, _ error: Error) {}
func didDismissAd(_ ad: BidMachineAdProtocol) {}
func willPresentScreen(_ ad: BidMachineAdProtocol) {}
func didDismissScreen(_ ad: BidMachineAdProtocol) {}
func didUserInteraction(_ ad: BidMachineAdProtocol) {}
func didExpired(_ ad: BidMachineAdProtocol) {}
func didTrackImpression(_ ad: BidMachineAdProtocol) {}
func didTrackInteraction(_ ad: BidMachineAdProtocol) {}
func didReceiveReward(_ ad: BidMachineAdProtocol) {}
- (void)didLoadAd:(id<BidMachineAdProtocol>)ad {}
- (void)didFailLoadAd:(id<BidMachineAdProtocol>)ad :(NSError *)error {}
- (void)didPresentAd:(id<BidMachineAdProtocol>)ad {}
- (void)didFailPresentAd:(id<BidMachineAdProtocol>)ad :(NSError *)error {}
- (void)didDismissAd:(id<BidMachineAdProtocol>)ad {}
- (void)willPresentScreen:(id<BidMachineAdProtocol>)ad {}
- (void)didDismissScreen:(id<BidMachineAdProtocol>)ad {}
- (void)didUserInteraction:(id<BidMachineAdProtocol>)ad {}
- (void)didExpired:(id<BidMachineAdProtocol>)ad {}
- (void)didTrackImpression:(id<BidMachineAdProtocol>)ad {}
- (void)didTrackInteraction:(id<BidMachineAdProtocol>)ad {}
- (void)didReceiveReward:(id<BidMachineAdProtocol>)ad {}
Loading and presenting interstitial ads​
Make sure both the delegate and controller are set before loading.
Example of intestitial ad loading:
- Swift
- Objective-C
guard let placement = try? BidMachineSdk.shared.placement(.interstitial) else { return }
let request = BidMachineSdk.shared.auctionRequest(placement: placement)
BidMachineSdk.shared.interstitial(request: request) { [weak self] ad, error in
guard let self = self else {
return
}
self.interstitial = ad
self.interstitial.controller = self
self.interstitial.delegate = self
self.interstitial.loadAd()
}
NSError *error = nil;
BidMachinePlacement *placement = [BidMachineSdk.shared placement:BidMachineAdFormat.interstitial
error:&error
builder:nil];
if (!placement) {
return;
}
BidMachineAuctionRequest *request = [[BidMachineSdk shared] auctionRequestWithPlacement:placement
builder:nil];
__weak typeof(self) weakSelf = self;
[[BidMachineSdk shared] interstitialWithRequest:request
completion:^(BidMachineInterstitial *ad, NSError * _Nullable error) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
strongSelf.interstitial = ad;
strongSelf.interstitial.controller = strongSelf;
strongSelf.interstitial.delegate = strongSelf;
[strongSelf.interstitial loadAd];
}];
Present the loaded ad:
- Swift
- Objective-C
interstitial.presentAd()
[self.interstitial presentAd];