Banner Ads
Ad Request
Placement
Create placement from PlacementFormat
with your parameters:
- Swift
- Objective-C
let placement = try? BidMachineSdk.shared.placement(from: .banner) {
$0.withPlacementId("")
$0.withCustomParameters([String:Any]())
}
NSError *error = nil;
BidMachinePlacement *placement = [[BidMachineSdk shared] placementFrom:BidMachinePlacementFormatBanner
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 |
PlacementFormat
The placement format is defined by the PlacementFormat
enum:
- Swift
- Objective-C
@objc(BidMachinePlacementFormat)
public enum PlacementFormat: Int {
case banner
case banner320x50
case banner728x90
case banner300x250
}
typedef SWIFT_ENUM_NAMED(NSInteger, BidMachinePlacementFormat, "PlacementFormat", open) {
BidMachinePlacementFormatBanner = 1,
BidMachinePlacementFormatBanner320x50 = 2,
BidMachinePlacementFormatBanner728x90 = 3,
BidMachinePlacementFormatBanner300x250 = 4
};
You can also get a format from a string:
- Swift
- Objective-C
let format = "banner".bidmachine_placement_format
BidMachinePlacementFormat format = [@"banner" bidmachine_placement_format];
Registered placement formats
Name | Description |
---|---|
banner | Responsive banner |
banner_320x50 | 320×50 banner |
banner_728x90 | 728×90 leaderboard banner |
banner_300x250 | 300×250 medium rectangle banner |
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 handles downloading and displaying ads.
Prepare the ad object
Request an ad using your auction request:
- Swift
- Objective-C
BidMachineSdk.shared.banner(request: request) { [weak self] ad, error in
guard let self else { return }
self.banner = ad
}
__weak typeof(self) weakSelf = self;
[[BidMachineSdk shared] bannerWithRequest:request
completion:^(BidMachineBanner *ad, NSError * _Nullable error) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
strongSelf.banner = ad;
}];
The loaded 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
Assign the delegate to receive 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 ads
Make sure both the delegate
and controller
are set before loading.
Example of banner ad loading:
- Swift
- Objective-C
guard let placement = try? BidMachineSdk.shared.placement(from: .banner) else { return }
let request = BidMachineSdk.shared.auctionRequest(placement: placement)
BidMachineSdk.shared.banner(request: request) { [weak self] ad, error in
guard let self = self else {
return
}
self.banner = ad
ad.controller = self
ad.delegate = self
ad.loadAd()
}
NSError *error = nil;
BidMachinePlacement *placement = [[BidMachineSdk shared] placementFrom:PlacementFormatBanner
error:&error
builder:nil];
if (!placement) {
return;
}
BidMachineAuctionRequest *request = [[BidMachineSdk shared] auctionRequestWithPlacement:placement
builder:nil];
__weak typeof(self) weakSelf = self;
[[BidMachineSdk shared] bannerWithRequest:request
completion:^(BidMachineBanner *ad, NSError * _Nullable error) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
strongSelf.banner = ad;
ad.controller = strongSelf;
ad.delegate = strongSelf;
[ad loadAd];
}];
Present the banner ad:
- Swift
- Objective-C
self.view.addSubview(banner)
[self.view addSubview:self.banner];
Mediation
If the request is involved in third-party mediation, you can use such methods to notify the SDK about the win or loss events:
- Swift
- Objective-C
//Where ad - is loaded bidmachine ad
//Mediation WIN ( ad )
BidMachineSdk.shared.notifyMediationWin(ad)
//Mediation LOSS ( winner, price, ad )
BidMachineSdk.shared.notifyMediationLoss("WINNER_NETWORK", 1.0, ad)
//Where ad - is loaded bidmachine ad
//Mediation WIN ( ad )
[BidMachineSdk.shared notifyMediationWin:ad];
//Mediation LOSS ( winner, price, ad )
[BidMachineSdk.shared notifyMediationLoss:@"WINNER_NETWORK" ecpm:1.0 ad:ad];