主题
暂停卡 —— 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) | 卡片已隐藏(播放恢复) |