Skip to content

激励视频 —— NovvyRewardedAd ​

一次性全屏广告:load() → show()。用户看完(广告变为可关闭)时回调 onUserEarnedReward 发放激励。

对接流程 ​

setContentContext(...)          // 短剧场景必需
        ↓
NovvyRewardedAd(adUnitId)
        ↓
load()  →  onAdLoaded           // 就绪(或 onAdFailedToLoad)
        ↓
show(activity)  →  onAdShown
        ↓
onUserEarnedReward              // 发放激励
        ↓
onAdClosed                      // 自动释放

创建 ​

kotlin
val rewardedAd = NovvyRewardedAd(adUnitId = "your_ad_unit_id")

加载 ​

提前 load(),就绪后回调 onAdLoaded(也可查 rewardedAd.isReady):

kotlin
rewardedAd.load(object : NovvyRewardedAdListener {
    override fun onAdLoaded(ad: NovvyRewardedAd) { /* 就绪,可展示 */ }
    override fun onAdFailedToLoad(ad: NovvyRewardedAd, error: NovvyError) { /* 加载失败 */ }
})

error 的取值见错误类型。

展示 ​

就绪后传入当前 Activity:

kotlin
rewardedAd.show(activity)

展示阶段回调(同一 listener):

kotlin
override fun onAdShown(ad: NovvyRewardedAd) { }
override fun onUserEarnedReward(ad: NovvyRewardedAd) { grantReward() }
override fun onAdClosed(ad: NovvyRewardedAd) { }

关闭后自动释放;未展示即放弃时调用 rewardedAd.destroy()。

事件回调 ​

NovvyRewardedAdListener 方法均有空实现默认值,按需重写;回调统一在主线程触发。

回调触发时机
onAdLoaded(ad)广告及素材已就绪,可展示
onAdFailedToLoad(ad, error)加载失败,error 为 NovvyError
onAdShown(ad)广告展示、曝光上报完成
onUserEarnedReward(ad)广告变为「可关闭」时触发一次,宿主在此发放激励
onAdClosed(ad)广告关闭,已加载状态自动释放

完整示例 ​

kotlin
class RewardedAdManager(private val activity: Activity) : NovvyRewardedAdListener {
    private var ad: NovvyRewardedAd? = null

    fun preload() {
        ad = NovvyRewardedAd(adUnitId = "your_ad_unit_id").also { it.load(this) }
    }

    fun showIfReady() {
        ad?.takeIf { it.isReady }?.show(activity)
    }

    override fun onAdLoaded(ad: NovvyRewardedAd) { /* 就绪 */ }
    override fun onAdFailedToLoad(ad: NovvyRewardedAd, error: NovvyError) {
        when (error) {
            is NovvyError.NoFill -> { /* 无填充,正常情况 */ }
            is NovvyError.InternalError -> log("内部错误: ${error.details}")
            else -> log("加载失败: ${error.message}")
        }
    }
    override fun onAdShown(ad: NovvyRewardedAd) { /* 已展示 */ }
    override fun onUserEarnedReward(ad: NovvyRewardedAd) { grantReward() }
    override fun onAdClosed(ad: NovvyRewardedAd) { ad.destroy(); this.ad = null }
}

本文档仅供技术对接使用,请勿外传。