主题
中插 —— NovvyMidAd
全屏、可预加载,用于剧集中插播放点。两段式:load() → show(from:)。
对接流程
Episode starts(本集开始播放)
↓
setContentContext(...) // series/episode
↓
NovvyMidAd(adUnitId:) + load()
↓
midAdDidLoad // 就绪(或 didFailToLoadWithError)
↓
到达中插点 → show(from: vc) → midAdDidShow
↓
midAdDidClose // 自动释放接入代码
swift
let midAd = NovvyMidAd(adUnitId: "your_ad_unit_id")
midAd.delegate = self
midAd.load()
// MARK: - NovvyMidAdDelegate
func midAdDidLoad(_ ad: NovvyMidAd) { ad.show(from: viewController) }
func midAd(_ ad: NovvyMidAd, didFailToLoadWithError error: NovvyError) { /* ... */ }
func midAdDidShow(_ ad: NovvyMidAd) { /* 已展示 */ }
func midAdDidClose(_ ad: NovvyMidAd) { /* 关闭 */ }关闭后自动释放;未展示即放弃时调用 midAd.destroy()。
事件回调
NovvyMidAdDelegate 中 midAdDidLoad / didFailToLoadWithError 需实现,其余有默认空实现;回调统一在主线程触发。
| 回调 | 触发时机 |
|---|---|
midAdDidLoad(ad) | 广告及素材已就绪,可展示 |
midAd(ad, didFailToLoadWithError:) | 加载失败,error 取值见错误类型 |
midAdDidShow(ad) | 广告已展示(不代表曝光已上报,见回调与曝光) |
midAdDidClose(ad) | 广告关闭,已加载状态自动释放 |