Rewarded Video Ad Format
Provides in-app rewards (currency, features, content) in exchange for watching video ads. Videos are non-skippable and typically run 30 seconds.
How It Works

Integrating Ads
Create adUnit
Copy
Ask AI
val adUnit = DaroRewardedAdUnit(
key = ${AdUnitId},
placement = ${placement}, //Name displayed in logs. Can be left empty.
)
Create Loader and load ad
Copy
Ask AI
val loader = DaroRewardedAdLoader(
context = context,
adUnit = adUnit
)
loader.setListener(object : DaroRewardedAdLoaderListener {
override fun onAdLoadSuccess(ad: DaroRewardedAd, adInfo: DaroAdInfo) {
// ...
}
override fun onAdLoadFail(err: DaroAdLoadError) {
// ...
}
})
loader.load()
Set listener and show ad
Copy
Ask AI
loader.setListener(object : DaroRewardedAdLoaderListener {
override fun onAdLoadSuccess(ad: DaroRewardedAd, adInfo: DaroAdInfo) {
ad.setListener(object : DaroRewardedAdListener {
override fun onShown(adInfo: DaroAdInfo) {}
override fun onFailedToShow(adInfo: DaroAdInfo, error: DaroAdDisplayFailError) {}
override fun onDismiss(adInfo: DaroAdInfo) {}
override fun onEarnedReward(adInfo: DaroAdInfo, rewardItem: DaroRewardedAd.DaroRewardedItem) {}
})
ad.show(activity = this@MainActivity)
}
override fun onAdLoadFail(err: DaroAdLoadError) {}
})
You can set the server callback method as follows:
Copy
Ask AI
loader.setListener(object : DaroRewardedAdLoaderListener {
override fun onAdLoadSuccess(ad: DaroRewardedAd, adInfo: DaroAdInfo) {
...
Daro.setUserId(context = context, ${user_id})
ad.setCustomData(${custom_data})
...
}
...
})
Example
Copy
Ask AI
private fun showRewardAd() {
DaroRewardedAdLoader(
context = context,
adUnit = DaroRewardedAdUnit(
key = ${AdUnitId},
placement = ${placement}
)
).apply {
setListener(
object : DaroRewardedAdLoaderListener {
override fun onAdLoadSuccess(ad: DaroRewardedAd, adInfo: DaroAdInfo) {
Log.d("Ad Test", "rewarded - success")
ad.setListener(
object : DaroRewardedAdListener {
override fun onShown(adInfo: DaroAdInfo) {
Log.d("Ad Test", "rewarded - onShown")
}
override fun onFailedToShow(
adInfo: DaroAdInfo,
error: DaroAdDisplayFailError,
) {
Log.d("Ad Test", "rewarded - onFailedToShow")
}
override fun onDismiss(adInfo: DaroAdInfo) {
Log.d("Ad Test", "rewarded - onDismiss")
ad.destroy()
}
override fun onEarnedReward(
adInfo: DaroAdInfo,
rewardItem: DaroRewardedAd.DaroRewardedItem,
) {
Log.d("Ad Test", "rewarded - onEarnedReward")
}
},
)
Daro.setUserId(context = context, ${user_id})
ad.setCustomData(${custom_data})
ad.show(activity = this@MainActivity)
}
})
load()
}
}
Troubleshooting: Ad Close Button Overlap Issue
When displaying rewarded ads using the DARO Android SDK, some ad creatives may visually overlap with the Status Bar or display cutout (notch, punch-hole) area.
The following guide shows how to hide the Status Bar only while the ad is displayed and restore it once the ad is dismissed.
Copy
Ask AI
// Before showing ad - hide status bar
private fun hideStatusBar(activity: Activity) {
WindowCompat.setDecorFitsSystemWindows(activity.window, false)
WindowInsetsControllerCompat(activity.window, activity.window.decorView).apply {
hide(WindowInsetsCompat.Type.statusBars())
systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
}
}
// After ad closes - restore status bar
private fun showStatusBar(activity: Activity) {
WindowCompat.setDecorFitsSystemWindows(activity.window, true)
WindowInsetsControllerCompat(activity.window, activity.window.decorView).apply {
show(WindowInsetsCompat.Type.statusBars())
}
}
Copy
Ask AI
ad.setListener(object : DaroRewardedAdListener {
override fun onShown(adInfo: DaroAdInfo) {
hideStatusBar(activity) // Defensive re-hide
}
override fun onFailedToShow(adInfo: DaroAdInfo, error: DaroAdDisplayFailError) {
showStatusBar(activity) // Restore on failure
}
override fun onDismiss(adInfo: DaroAdInfo) {
showStatusBar(activity) // Restore on dismiss
ad.destroy()
}
override fun onEarnedReward(adInfo: DaroAdInfo, rewardItem: DaroRewardedAd.DaroRewardedItem) {}
})
hideStatusBar(activity) // Call just before show()
ad.show(activity = this@MainActivity)

