同时加载多个广告
要同时准备多种格式,并发地请求并加载它们。每种格式并行请求和渲染,某种格式没有广告不会影响其他格式:运行你自己的竞价
VideoAd 在渲染前就带着价格,所以你可以和其他广告网络比较后再决定:
price.value 是以 price.currency 计的 CPM。price.precision 说明它是广告主的成交价(.exact)还是自有需求的预估(.estimated)。
reject 立即告知服务器,服务器告诉广告主其胜出未产生曝光。另一个广告网络以价格胜出时用 .outbid 并带上胜出价格和广告网络,让我们能针对你的流量优化出价;其他任何原因用 .notUsed(默认):时机过了、观众离开了。拒绝是可选的;你从未使用的广告会在过期或你调用 destroy() 时结算。
处理无填充
服务器没有该格式的广告时format(_:) 抛出 VideoAdError.noFill(reason:)。这不是失败,SDK 从不自行重试;在之后的时刻再问。
把播放位置告诉 SDK
每次请求和事件都带有观众在这一集中的位置。剧集开始播放后,用以下两种方式之一把播放器交给 SDK。 使用AVPlayer 时,把它交给 SDK,SDK 会在需要时读取它的时间:
VideoAds 时:在那之前播放器的时间属于上一集。在那之前 SDK 发送 0,这对预取来说是正确的。
下一集
当前一集播放时创建下一集的VideoAds,预取它的广告,观众离开时销毁当前的。任意数量的实例可以同时存在;SDK 让整个应用同一时间最多一个广告在屏幕上。
trackPlayhead(of:),而不是创建时:在那之前播放器的时间属于上一集。