VideoAdHost 是一个负责桥接的 SwiftUI 视图:把它放在播放器之上,设置它的 ad,广告就会展示。它属于 KontextVideoSDK,无需添加其他内容。
播放器页面
把播放器、VideoAds 和屏幕上的广告放在页面通过 @StateObject 持有的模型中:
VideoAdHost
- 设置广告即展示。 宿主在屏幕上且有尺寸后,已加载的广告就会展示。设为
nil或另一个广告,当前展示的广告就会关闭;宿主离开视图层级时也会关闭。 - 所有格式。 叠加广告或暂停广告展示在宿主所在的位置。线性广告从最顶层的视图控制器全屏呈现;宿主从不关闭它:它自行结束或由观众结束,
onEnd仍会送达。 - 宿主是广告的 delegate。 通过宿主的闭包接收广告事件,而不是
ad.delegate。 onShowFailed收到show会抛出的原因:anotherAdShowing、contentPaused、containerTooSmall等。- 广告以外的点击 会传给你的播放器,因此你自己的手势照常工作。
把广告放在模型中
SwiftUI 会重建视图结构体。把VideoAds 放在你的 @StateObject 模型中,而不是视图中:释放 VideoAds 会结束它的广告。在观众真正离开剧集时(你的返回按钮、下一集)调用 ads.destroy(),而不是在 onDisappear 中:线性广告覆盖你的视图时,SwiftUI 也会调用 onDisappear。
在信息流中
为每一页提供自己的模型和宿主,只在当前页设置广告。被滑走的页面上的广告会在大约一秒内结束(.interrupted),为下一页的广告腾出屏幕。见信息流中的广告。