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
| Type | Description |
|---|---|
AdContentType.All | Flag to request both Video and Static ad content types |
AdContentType.Static | Flag to request Static ad content type only |
AdContentType.Video | Flag 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;
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.