Implement rewarded ads in your Android app. Load ad content, display it through Java code, and use a listener to manage ad events and reward logic.
Read time 1 minuteLast updated 8 days ago
Rewarding users for watching ads increases user engagement, resulting in higher revenue. For example, games might reward users with in-game currency, consumables, additional lives, or experience-multipliers. For more information on how to effectively design your rewarded ads, refer to the monetization strategy guide.
Rewarded video ad load example
Call
show()
on the retained
RewardedAd
instance, passing the activity, a
ShowConfiguration
, and a
RewardedShowListener
. The listener provides
onStarted
,
onClicked
, and
onFailed
callbacks for standard ad lifecycle events, as well as two reward-specific callbacks:
onRewarded
, which fires when the user earns a reward, and
onCompleted
, which fires after it when the ad closes. Because both callbacks can fire in sequence, reward logic should be handled in only one of them, typically by checking a flag like
shouldAlwaysRewardUser()
to avoid granting the reward twice.Ads expire a set time after they load if they aren't shown. Set
onAdExpired
on the loaded ad instance to detect this. This is especially relevant for rewarded ads since they're often preloaded and held until the user opts in. Calling
show()
on an expired ad fails, so use the callback to clear your stored reference and issue a new
load()
call so a fresh ad is ready when needed.
RewardedAd.load(loadConfig, (rewardedAd, error) -> { if (rewardedAd != null) { // Ad loaded successfully, ready to be shown this.rewardedAd = rewardedAd; rewardedAd.setOnAdExpired(expiredAd -> { this.rewardedAd = null; // reload here }); } else { // Handle load error }});
RewardedAd.load(loadConfig, { rewardedAd, error -> if (rewardedAd != null) { // Ad loaded successfully, ready to be shown this.rewardedAd = rewardedAd rewardedAd.onAdExpired = AdExpiredListener { _ -> this.rewardedAd = null // reload here } } else { // Handle load error }})