AVPlayer 不需要适配器:track(_:) 直接接受它。
跟随播放器
- 任何
AVPlayer,包括AVQueuePlayer,无论在哪里渲染:AVPlayerLayer、AVPlayerViewController、SwiftUI 的VideoPlayer。 - 弱持有: SDK 绝不会让你的播放器保持存活。它在
destroy()或下一次track(_:)时放开。 - 在剧集开始播放时调用,而不是在创建
VideoAds时:在那之前播放器的时间属于上一集。在那之前 SDK 发送 0,这对预取来说是正确的。
多集共用一个播放器
大多数应用复用一个播放器并替换它的播放项。每一集的播放项进入播放器后,用该集的VideoAds 跟随它:
show 时抛出 invalidated(.contentChanged):SDK 把上一个播放项当成了这一集的。新播放项就位后再次跟随即可正常展示。
SDK 读取什么
SDK 会观察播放器,因此无论暂停来自哪里,观众一暂停叠加广告就会结束:你的控件、锁屏、控制中心、耳机、画中画。
在后台
应用进入后台时,iOS 会暂停AVPlayer。屏幕上的叠加广告会冻结而不是结束:如果应用回到前台后一秒内内容再次播放,它会继续,否则以 .interrupted 结束。
循环播放的剧集
AVPlayerLooper 播放的是播放项的副本,因此每一次循环都是另一个播放项:在一次循环中请求的叠加广告或暂停广告,在下一次循环中会被拒绝(invalidated(.contentChanged))。像往常一样在 didEnd 中请求下一个广告,它就属于正在播放的那次循环。