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.