广告规则

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

    1. 实现 IMAContentPlayhead 接口。
    2. 实现 currentTime 以返回视频播放器的当前时间。
    3. IMAAdsManager 初始化调用更改为使用 initializeWithContentPlayhead:self
  • IMAAdsManagerDelegate 可用于在广告插播时间点播放时暂停和恢复内容。

注意:当内容播放完毕或用户已停止播放时,请务必在 IMAAdsLoader 上调用 contentComplete,以便向 SDK 表明内容已播放完毕。然后,SDK 会播放后贴片广告插播时间点(如果已安排)。 ALL_ADS_COMPLETED 事件会在所有广告插播时间点播放完毕时引发。另请注意,在调用 IMAAdsManagerinitializeWithContentPlayhead:adsRenderingSettings 方法后,内容跟踪便会开始,您应始终在播放内容之前调用 initializeWithContentPlayhead:adsRenderingSettings