SDK 操作模式
SDK 可在一种或多种模式下运行,具体取决于它从广告服务器收到的广告响应。
- 单个广告
- 在
start
消息发送到IMAAdsManager
后可随时播放的广告。播放单个广告无需进行特殊的初始化。 - 广告连播
- 在向
IMAAdsManager
发送start
消息时连续播放的多个广告。播放单个广告连播无需进行特殊的初始化。 - 广告规则
- 针对特定内容安排在特定时间播放的广告插播时间点播放列表。在广告规则模式下,系统会忽略
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
。