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