Skip to content

信息流滑动位 —— NovvyScrollAd ​

内联信息流广告:load() 预加载 → attach(container) 挂载 → setPlaying(true/false) 驱动播放。

可选 episode 覆盖该广告归属的集号(如第 1 集播放时预载第 2 集的广告)。

对接流程 ​

Episode starts(本集开始播放)
        ↓
setContentContext(...)                       // series/episode
        ↓
NovvyScrollAd(adUnitId, episode) + load()
        ↓
onAdLoaded                                   // 就绪(或 onAdFailedToLoad)
        ↓
用户划到广告位  →  attach(container)
        ↓
划入 setPlaying(true) → onAdShown / 划走 setPlaying(false)
        ↓
detach() / destroy()

接入代码 ​

kotlin
val scrollAd = NovvyScrollAd(
    adUnitId = "your_ad_unit_id",
    episode  = 2,   // 可选:该广告归属的集号
)

// 1. 预加载
scrollAd.load(object : NovvyScrollAdListener {
    override fun onAdLoaded(ad: NovvyScrollAd) { /* 就绪 */ }
    override fun onAdFailedToLoad(ad: NovvyScrollAd, error: NovvyError) { /* ... */ }
    override fun onAdShown(ad: NovvyScrollAd) { /* 已展示 */ }
    override fun onAdHidden(ad: NovvyScrollAd) { /* 已隐藏 */ }
})

// 2. 挂载到容器(用户划到广告位时)
scrollAd.attach(
    container = container,
    onAdPlaybackTick = { remainingSeconds ->
        // remainingSeconds > 0:锁定中,禁止划走;== 0:可划走
    },
)

// 3. 划入广告页 → 开始曝光/倒计时;划走 → 停止
scrollAd.setPlaying(true)
scrollAd.setPlaying(false)

// 4. 释放
scrollAd.detach()   // 从容器移除(触发 onAdHidden)
scrollAd.destroy()  // 完全释放

事件回调 ​

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

回调触发时机
onAdLoaded(ad)广告及素材已就绪,可挂载
onAdFailedToLoad(ad, error)加载失败,error 为 NovvyError,取值见错误类型
onAdShown(ad)广告挂载展示、曝光上报完成
onAdHidden(ad)广告从容器移除 / 隐藏(detach() 也会触发)

另有一个通过 attach() 传入的回调,不在 listener 上:

回调触发时机
onAdPlaybackTick(remainingSeconds)播放中每秒回调剩余锁定秒数:> 0 表示锁定中、禁止划走,== 0 表示可划走

集数覆盖 ​

NovvyScrollAd 常在「当前集」预载「下一集」的广告,全局上下文里的 episode 不一定对得上,所以构造参数 episode = N 会覆盖上下文的 episode(series / url 仍取自上下文)。详见用户与内容上下文。

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