Skip to content

暂停卡 —— NovvyPauseAd ​

实时暂停卡(固定 260×90pt),在播放器暂停时展示。无 load() 预加载、无 pauseAdDidLoad —— attach() 时实时请求。需宿主实现 NovvyPlayerAdapter 供 SDK 读取播放状态。

在「视频暂停那一刻」调用 attach()

attach() 会立即发起请求;恢复播放时 destroy(),下次暂停重新 attach。

对接流程 ​

Episode starts(本集开始播放)
        ↓
视频被暂停那一刻
        ↓
setContentContext(...) + attach(to:player:)     // 实时请求
        ↓
pauseAdDidShow                                  // 卡片显示
        ↓
恢复播放  →  pauseAdDidFinish
        ↓
destroy()                                       // 需宿主主动释放

接入代码 ​

swift
// 宿主实现播放器适配器
final class MyPlayerAdapter: NovvyPlayerAdapter {
    let avPlayer: AVPlayer
    init(_ p: AVPlayer) { self.avPlayer = p }
    var currentPositionMs: Int64 { Int64(avPlayer.currentTime().seconds * 1000) }
    var isPlaying: Bool { avPlayer.rate > 0 }
}

let pauseAd = NovvyPauseAd(adUnitId: "your_ad_unit_id")
pauseAd.delegate = self

// 一次性:立即请求,就绪后挂载到容器
pauseAd.attach(to: containerView, player: playerAdapter)

// MARK: - NovvyPauseAdDelegate
func pauseAd(_ ad: NovvyPauseAd, didFailToLoadWithError error: NovvyError) { /* ... */ }
func pauseAdDidShow(_ ad: NovvyPauseAd) { /* 暂停卡已展示 */ }
func pauseAdDidFinish(_ ad: NovvyPauseAd) { /* 已隐藏(播放恢复),可 destroy */ }

// 释放
pauseAd.detach()
pauseAd.destroy()

事件回调 ​

NovvyPauseAdDelegate 中 didFailToLoadWithError 需实现,其余有默认空实现;回调统一在主线程触发。

回调触发时机
pauseAd(ad, didFailToLoadWithError:)加载失败(无 pauseAdDidLoad —— 实时请求,无预加载阶段),error 取值见错误类型
pauseAdDidShow(ad)卡片已展示(不代表曝光已上报,见回调与曝光)
pauseAdDidFinish(ad)卡片已隐藏(播放恢复)

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