Skip to main content

Rewarded Ads

Ad Request

Placement

Create a placement configuration using AdPlacementConfig.RewardedBuilder() with an AdContentType, optional placement id, and custom parameters.

var config = AdPlacementConfig.RewardedBuilder(AdContentType.Video)
.WithPlacementId("your_placement_id") // Optional placement id
.WithCustomParams(customParams) // Optional custom parameters
.Build();

AdContentType

TypeDescription
AdContentType.AllFlag to request both Video and Static ad content types
AdContentType.StaticFlag to request Static ad content type only
AdContentType.VideoFlag to request Video ad content type only

Build the Request

Create a RewardedRequest.Builder with the placement config, set optional targeting and price floor parameters, attach an IAdAuctionRequestListener, and call Build(). Building the request triggers the auction.

var rewardedRequest = new RewardedRequest.Builder(config)
.SetPriceFloorParams(priceFloorParams) // Optional price floor parameters
.SetTargetingParams(targetingParams) // Optional targeting parameters
.SetLoadingTimeOut(10000) // Optional timeout in milliseconds
.SetListener(rewardedRequestListener) // Auction request listener
.Build();

Auction Request Listener

Implement IAdAuctionRequestListener to receive auction callbacks:

private class RewardedRequestListener : IAdAuctionRequestListener
{
public void onRequestSuccess(IAdRequest request, AuctionResult auctionResult)
{
Debug.Log("RewardedRequest succeeded");
}

public void onRequestFailed(IAdRequest request, BMError error)
{
Debug.Log($"RewardedRequest failed: {error.Message}");
}

public void onRequestExpired(IAdRequest request)
{
Debug.Log("RewardedRequest expired");
}
}

Client Bidding Request

For server-to-server (S2S) integration, pass the Base64-encoded bid payload received from your server-side auction to the builder:

var rewardedRequest = new RewardedRequest.Builder(config)
.SetBidPayload(bidPayloadString)
.SetListener(rewardedRequestListener)
.Build();

Ad Display

Define Ad Listener

Before loading, create a RewardedAd and set an IRewardedAdListener listener:

var rewardedAd = new RewardedAd();
rewardedAd.SetListener(rewardedListener);
rewardedAd.Load(rewardedRequest);

Implement the listener to handle ad lifecycle events:

private class RewardedAdListener : IRewardedAdListener
{
public void onAdLoaded(IRewardedAd ad)
{
// Ad is loaded and ready to be displayed
}

public void onAdLoadFailed(IRewardedAd ad, BMError error)
{
// Ad failed to load
}

public void onAdShown(IRewardedAd ad)
{
// Ad has been shown
}

public void onAdShowFailed(IRewardedAd ad, BMError error)
{
// Ad failed to show
}

public void onAdImpression(IRewardedAd ad)
{
// Ad impression has been tracked
}

public void onAdRewarded(IRewardedAd ad)
{
// Rewarded ad was completed (e.g. video played to the end)
// Use this event to reward the user
}

public void onAdClosed(IRewardedAd ad, bool finished)
{
// Ad was closed
// finished indicates if the ad was completed (e.g. video played to the end)
}

public void onAdExpired(IRewardedAd ad)
{
// Ad has expired
}
}

Show the Rewarded Ad

Use onAdLoaded to determine when the ad is ready. Before displaying, check CanShow():

if (rewardedAd.CanShow())
{
rewardedAd.Show();
}

Destroy the Rewarded Ad

When the ad is no longer needed, clean up resources:

rewardedAd.SetListener(null);
rewardedAd.Destroy();
rewardedAd = null;
rewardedRequest = null;
warning

Don't destroy the RewardedRequest if it will be used to load a RewardedAd, or if the loaded RewardedAd has not been shown yet. Premature destruction can affect display rate, fill rate, and revenue.