SDK 操作模式
SDK 可以根据从广告服务器收到的广告响应以一种或多种模式运行。
- 单个广告
- 一种可在向
IMAAdsManager
发送消息时随时播放的广告。start
无需进行特殊初始化即可播放单个广告。 - 广告连播
- 当
start
消息发送到IMAAdsManager
时,连续播放多个广告。无需进行特殊初始化即可播放单个广告插播时间。 - 广告规则
- 在特定时间针对特定内容安排的广告插播时间点播放列表。在广告规则模式下,系统会忽略
start
消息。单个播放列表中可以安排多个广告插播时间点(例如,前贴片、中贴片、后贴片)。如需了解更多实现细节,请参阅下文的广告规则部分。
广告规则
IMA iOS SDK 支持完全自动化的广告播放列表。此功能可在投放广告时,按照 Google Ad Manager 中的指定将广告插播时间点插入到内容中。它还大大简化了支持广告插播(包括前贴片广告、中贴片广告和后贴片广告)所需的视频播放器代码。
- 在 Ad Manager 中投放广告时,可以指定各种广告规则,例如“始终在内容开头播放广告插播”或“每 30 分钟的内容播放 1 分钟的广告插播”。
- 请求广告时,广告服务器可以返回广告播放列表。SDK 会处理播放列表,并自动安排已指定的广告插播时间。
- 初始化
AdsManager
时,会通过initializeWithContentPlayhead:adsRenderingSettings:
调用传入IMAContentPlayhead
对象。如果您使用 AVPlayer 显示内容,则在创建adDisplayContainer
时,需要向 SDK 传递IMAAVPlayerContentPlayhead
的实例。此对象用于跟踪内容播放进度,以便在 Ad Manager 中指定的时间自动插入广告插播时间点。
使用 AVPlayer:
IMAContentPlayhead *contentPlayhead = [[IMAAVPlayerContentPlayhead alloc] initWithAVPlayer:self.contentAVPlayer]; IMAAdsRequest *request = [[IMAAdsRequest alloc] initWithAdTagUrl:adTagUrl adDisplayContainer:adDisplayContainer contentPlayhead:contentPlayhead userContext:nil];
不含 AVPlayer:
- 实现
IMAContentPlayhead
接口。 - 实现
currentTime
以返回视频播放器的当前时间。 - 将
IMAAdsManager
初始化调用更改为使用initializeWithContentPlayhead:self
。
- 实现
- IMAAdsManagerDelegate 用于在播放广告插播时暂停和恢复内容。
注意:当内容播放完毕或用户停止播放时,请务必对 IMAAdsLoader
调用 contentComplete
,以便向 SDK 发出内容已播放完毕的信号。然后,SDK 会播放预定好的后贴片广告插播时间点(如果有)。
当所有广告时段都已播放完毕时,系统会触发 ALL_ADS_COMPLETED
事件。此外,请注意,当调用 IMAAdsManager
的 initializeWithContentPlayhead:adsRenderingSettings
方法时,内容跟踪即会开始,并且您应始终在播放内容之前调用 initializeWithContentPlayhead:adsRenderingSettings
。