Banner / MREC Ads
Ad Request
Placement
Create a BannerRequest.Builder
instance, set BannerSize
, placement id and other parameters, if applicable.
- Java
- Kotlin
BannerRequest.Builder bannerRequestBuilder = new BannerRequest.Builder()
.setPlacementId(...) // Set placement id
.setSize(...) // Set BannerSize. Required
.setTargetingParams(...) // Set TargetingParams instance
.setPriceFloorParams(...) // Set price floor parameters
.setLoadingTimeOut(...) // Set loading timeout in milliseconds
val bannerRequestBuilder = BannerRequest.Builder()
.setPlacementId(...) // Set placement id
.setSize(...) // Set BannerSize. Required
.setTargetingParams(...) // Set TargetingParams instance
.setPriceFloorParams(...) // Set price floor parameters
.setLoadingTimeOut(...) // Set loading timeout in milliseconds
BannerSize
BannerSize
is a required parameter:
Type | Size | Description |
---|---|---|
Size_320x50 | 320x50 | Regular banner size. |
Size_728x90 | 728x90 | Banner size for tablets. |
Size_300x250 | 300x250 | MREC banner size. |
General Request
Set the BannerRequest.AdRequestListener
instance to theBannerRequest.Builder
instance.
- Java
- Kotlin
bannerRequestBuilder.setListener(new BannerRequest.AdRequestListener() {
@Override
public void onRequestSuccess(@NonNull BannerRequest request,
@NonNull AuctionResult auctionResult) {
// Called when BannerRequest was requested successfully
}
@Override
public void onRequestFailed(@NonNull BannerRequest request,
@NonNull BMError error) {
// Called when BannerRequest request failed
}
@Override
public void onRequestExpired(@NonNull BannerRequest request) {
// Called when BannerRequest expired
}
});
bannerRequestBuilder.setListener(object : BannerRequest.AdRequestListener {
override fun onRequestSuccess(request: BannerRequest,
auctionResult: AuctionResult) {
// Called when BannerRequest was requested successfully
}
override fun onRequestFailed(request: BannerRequest,
error: BMError) {
// Called when BannerRequest request failed
}
override fun onRequestExpired(request: BannerRequest) {
// Called when BannerRequest expired
}
})
AdRequestListener
callbacks are delivered on the background thread, not the main one.
When all the necessary parameters are set, call build
on the BannerRequest.Builder
instance:
- Java
- Kotlin
BannerRequest bannerRequest = bannerRequestBuilder.build();
val bannerRequest = bannerRequestBuilder.build()
You need to keep reference to BannerRequest
before calling BannerRequest#request
, otherwise, it is possible it will be cleared by Garbage Collector and callbacks won’t be triggered.
Client Bidding Request
Bid Token
With S2S integration, you will need a BidToken
that you need to transfer in the request.
Define AdPlacementConfig
:
- Java
- Kotlin
AdPlacementConfig adPlacementConfig = new AdPlacementConfig.Builder(AdsFormat)
.withPlacementId(...) // Set placement id
.build();
val adPlacementConfig = AdPlacementConfig.Builder(AdsFormat)
.withPlacementId(...) // Set placement id
.build()
To get a BidToken
, you can use one of 2 methods:
- Java
- Kotlin
// Must be run on background thread
String bidToken = BidMachine.getBidToken(@NonNull Context, @NonNull AdPlacementConfig);
// Must be run on background thread
val bidToken = BidMachine.getBidToken(Context, AdPlacementConfig)
or
- Java
- Kotlin
BidMachine.getBidToken(@NonNull Context, @NonNull AdPlacementConfig, new BidTokenCallback() {
@Override
public void onCollected(@NonNull String bidToken) {
// The BidToken will be returned on a background thread
}
});
BidMachine.getBidToken(Context, AdPlacementConfig) { bidToken ->
// The BidToken will be returned on a background thread
}
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 BannerRequest.Builder
:
- Java
- Kotlin
bannerRequestBuilder.setBidPayload(@Nullable String);
bannerRequestBuilder.setBidPayload(String?)
When all the necessary parameters are set, call build
on the BannerRequest.Builder
instance:
- Java
- Kotlin
BannerRequest bannerRequest = bannerRequestBuilder.build();
val bannerRequest = bannerRequestBuilder.build()
You need to keep reference to BannerRequest
before calling BannerRequest#request
, otherwise, it is possible it will be cleared by Garbage Collector and callbacks won’t be triggered.
Ad Display
Prepare the Ad Request object
When you need to request an ad and get an AuctionResult
, call request
on the BannerRequest
instance.
- Java
- Kotlin
bannerRequest.request(...);
bannerRequest.request(...)
If you have an in-house meditation and you decide that an advertisement from BidMachine will be shown - call bannerRequest.notifyMediationWin
, if BidMachine loses the mediation - call bannerRequest.notifyMediationLoss
Destroy the BannerRequest
instance if you don't need it anymore.
- Java
- Kotlin
bannerRequest.destroy();
bannerRequest.destroy()
Don't destroy the BannerRequest
instance, if it will be used for load the BannerView
instance or if the BannerView
instance loaded with the BannerRequest
instance has not been shown yet.
Otherwise, ad will not work correctly, which can affect a lower display rate, fill rate, rendering errors, and as a result - lower revenue.
Define Ad Listener
Before executing load
on the BannerView
instance, set up the BannerListener
instance:
- Java
- Kotlin
BannerView bannerView = new BannerView(...);
bannerView.setListener(new BannerListener() {
@Override
public void onAdLoaded(@NonNull BannerView ad) {
// Called when Ad was loaded and ready to be displayed
}
@Override
public void onAdLoadFailed(@NonNull BannerView ad,
@NonNull BMError error) {
// Called when Ad failed to load
}
@Override
public void onAdImpression(@NonNull BannerView ad) {
// Called when Ad Impression has been tracked
}
@Override
public void onAdShowFailed(@NonNull BannerView ad,
@NonNull BMError error) {
// Called when Ad show failed
}
@Override
public void onAdClicked(@NonNull BannerView ad) {
// Called when Ad has been clicked
}
@Override
public void onAdExpired(@NonNull BannerView ad) {
// Called when Ad expired
}
});
bannerView.load(bannerRequest);
val bannerView = BannerView(...)
bannerView.setListener(object : BannerListener {
override fun onAdLoaded(ad: BannerView) {
// Called when Ad was loaded and ready to be displayed
}
override fun onAdLoadFailed(ad: BannerView,
error: BMError) {
// Called when Ad failed to load
}
override fun onAdImpression(ad: BannerView) {
// Called when Ad Impression has been tracked
}
override fun onAdShowFailed(ad: BannerView,
error: BMError) {
// Called when Ad show failed
}
override fun onAdClicked(ad: BannerView) {
// Called when Ad has been clicked
}
override fun onAdExpired(ad: BannerView) {
// Called when Ad expired
}
})
bannerView.load(bannerRequest)
Loading and presenting banner ads
Make sure that the BannerRequest
instance has AuctionResult
. It means the ads have been requested successfully.
- Java
- Kotlin
bannerRequest.getAuctionResult() != null
bannerRequest.auctionResult != null
Use onAdLoaded
callback to determine the possibility of displaying
Before displaying, check if the BannerView
instance can be displayed:
- Java
- Kotlin
bannerView.canShow();
bannerView.canShow()
To display the BannerView
instance, you just need to add it to the layout.
- Java
- Kotlin
viewGroup.removeAllViews();
viewGroup.addView(bannerView);
viewGroup.removeAllViews()
viewGroup.addView(bannerView)
After ad was successful shown and no longer needed, it can be destroyed.
- Java
- Kotlin
bannerView.destroy();
bannerView.destroy()
You can find code examples written in Java and Kotlin: Github Banner