Skip to main content

Banner Ads

Ad Request

Placement

Create placement from AdFormat with your parameters:

let placement = try? BidMachineSdk.shared.placement(.banner320x50) {
$0.withPlacementId("")
$0.withCustomParameters([String:Any]())
}
ParameterTypeDescription
placementIdStringPlacement ID
customParameters[String: Any] / NSDictionaryPassed directly to the server

AdFormat

The placement format is defined by static properties of the AdFormat class:

@objc(BidMachineAdFormat)
final public class AdFormat : NSObject {
@objc public static var banner320x50: BidMachine.AdFormat { get }
@objc public static var banner728x90: BidMachine.AdFormat { get }
@objc public static var banner300x250: BidMachine.AdFormat { get }
@objc public static func bannerAdaptive(width: UInt32, maxHeight: UInt32) -> BidMachine.AdFormat
}

Available banner formats

FormatDescription
banner320x50Standard 320×50 banner
banner728x90Leaderboard 728×90 banner
banner300x250Medium rectangle 300×250 banner
bannerAdaptiveAdaptive banner with custom width and max height
Adaptive Banner Height

When using bannerAdaptive, the maxHeight parameter defaults to 0 if not specified. A value of 0 acts as a wildcard, allowing the banner to use any height based on the ad content.

// Adaptive banner with width 320 and wildcard height
let placement = try? BidMachineSdk.shared.placement(.bannerAdaptive(width: 320))

// Or with specific max height
let placement = try? BidMachineSdk.shared.placement(.bannerAdaptive(width: 320, maxHeight: 50))

General Request

Auction request is used to set bidding parameters: The request is created with a special placement and your parameters

let request = BidMachineSdk.shared.auctionRequest(placement: placement) {
$0.withUnitConfigurations([BidMachineUnitConfiguration]())
$0.appendPriceFloor(Double(10), UUID().uuidString)
}
ParameterTypeDescription
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:

 BidMachineSdk.shared.token(placement: placement) { token in }

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.

let request = BidMachineSdk.shared.auctionRequest(placement: placement) {
$0.withPayload("")
}
ParameterTypeDescription
payloadStringCustom BidMachine payload string

Ad Display

The ad object handles downloading and displaying ads.

Prepare the ad object

Request an ad using your auction request:

BidMachineSdk.shared.banner(request: request) { [weak self] ad, error in
guard let self else { return }
self.banner = ad
}

The loaded ad contains auctionInfo and requestInfo.

Auction Info

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:

ad.delegate = self

Implement BidMachineAdDelegate methods:

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) {}

Loading and presenting ads

Loading prerequisites

Make sure both the delegate and controller are set before loading.

Example of banner ad loading:

guard let placement = try? BidMachineSdk.shared.placement(.banner320x50) 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()
}

Present the banner ad:

self.view.addSubview(banner)