本指南介绍了如何将 IMA DAI SDK 集成到视频播放器应用中。如果您想查看或按照完整的集成示例操作,请从 GitHub 下载 PodServingExample。
IMA DAI 概览
如本指南所示,实现 IMA DAI 涉及四个主要 SDK 组件:
IMAAdDisplayContainer- 位于视频播放元素之上并包含广告界面元素的容器对象。IMAAdsLoader- 请求视频流并处理由视频流请求响应对象触发的事件的对象。 您应该只实例化一个广告加载器,该加载器可在应用的整个生命周期内重复使用。IMAStreamRequest-IMAPodVODStreamRequest或IMAPodStreamRequest。IMAStreamManager- 一个用于处理动态广告插播视频流以及与 DAI 后端进行交互的对象。直播管理工具还会处理跟踪 ping,并将直播和广告事件转发给发布商。
此外,如需播放 Pod 投放视频流,请实现自定义 VTP 处理程序。此自定义 VTP 处理程序会将视频流 ID 以及 VTP 所需的任何其他信息发送给您的视频技术合作伙伴 (VTP),以便 VTP 返回包含内容和拼接广告的视频流清单。您的 VTP 会提供有关如何实现自定义 VTP 处理程序的说明。
前提条件
在开始之前,您需要做好以下准备:
- Xcode 13 或更高版本
- IMA SDK 的安装方法:
- Swift Package Manager(首选)
- IMA iOS SDK 的下载副本
您还需要使用这些参数从 IMA SDK 请求视频流。
| 直播参数 | |
|---|---|
| 广告资源网代码 |
您的 Ad Manager 360 账号的广告资源网代码。 |
| 自定义素材资源键 |
用于在 Ad Manager 360 中标识广告连播投放事件的自定义素材资源键。由您的清单操纵器或第三方 Pod Serving 合作伙伴创建。 |
| VOD 视频流参数 | |
| 广告资源网代码 |
您的 Ad Manager 360 账号的广告资源网代码。 |
创建新的 Xcode 项目
在 Xcode 中,使用 Objective-C 创建一个名为“PodServingExample”的新 iOS 项目。
将 IMA DAI SDK 添加到 Xcode 项目中
如需安装 IMA SDK,请选择首选方法。
推荐:使用 Swift Package Manager 安装 SDK
互动式媒体广告 SDK 支持 3.18.4 及更高版本的 Swift Package Manager。请按照以下步骤导入 Swift 软件包。
在 Xcode 中,安装 IMA DAI SDK Swift 软件包:前往“File”(文件)>“Add Packages”(添加软件包)。
在随即显示的提示中,搜索 IMA DAI SDK Swift 软件包 GitHub 代码库:
https://github.com/googleads/swift-package-manager-google-interactive-media-ads-ios选择您要使用的 IMA DAI SDK Swift 软件包版本。对于新项目,请使用 Up to Next Major Version(更新至下一主要版本前的最新版)规则。
完成后,Xcode 会解析您的软件包依赖项,并在后台下载它们。如需详细了解如何添加软件包依赖项,请参阅 Apple 的文章。
手动下载并安装 SDK
如果您不想使用 Swift Package Manager,请下载 IMA SDK 并手动将其添加到项目中。
创建视频播放器
在主视图控制器中实现视频播放器;在界面视图中封装 AV 播放器。IMA SDK 使用界面视图来显示展示广告界面元素。
Objective-C
Swift
初始化广告加载器
将 IMA SDK 导入视图控制器,并采用 IMAAdsLoaderDelegate 和 IMAStreamManagerDelegate 协议来处理广告加载器和直播流管理器事件。
添加以下私有属性,以存储关键 IMA SDK 组件:
IMAAdsLoader- 在应用的整个生命周期内管理视频流请求。
IMAAdDisplayContainer- 负责插入和管理广告界面元素。
IMAAVPlayerVideoDisplay- 在 IMA SDK 与媒体播放器之间进行通信,并处理定时元数据。IMAStreamManager- 管理视频流播放并触发广告相关事件。
在视图加载后,初始化广告加载器、广告展示容器和视频展示。
Objective-C
Swift
发出流式传输请求
当用户按下播放按钮时,发出新的视频流请求。
对直播使用 IMAPodStreamRequest 类。对于 VOD 视频流,请使用 IMAPodVODStreamRequest 类。
直播请求需要您的直播参数,以及对广告展示容器和视频展示的引用。
Objective-C
Swift
监听直播流加载事件
IMAAdsLoader 类会在数据流请求成功初始化或失败时调用 IMAAdsLoaderDelegate 方法。
在 adsLoadedWithData 委托方法中,设置 IMAStreamManagerDelegate。
将直播 ID 传递给自定义 VTP 处理程序,并检索直播清单网址。对于直播,请将清单网址加载到视频显示中,然后开始播放。对于 VOD 视频流,请将清单网址传递给视频流管理器的 loadThirdPartyStream 方法。此方法会从 Ad Manager 360 请求广告事件数据,然后加载清单网址并开始播放。
在 failedWithErrorData 委托方法中,记录错误。(可选)播放备用直播。请参阅 DAI 最佳实践。
Objective-C
Swift
实现自定义 VTP 处理程序
自定义 VTP 处理程序会将观看者的直播 ID 以及 VTP 所需的任何其他信息发送给您的视频技术合作伙伴 (VTP),以便返回包含内容和拼接广告的直播清单。您的 VTP 会提供有关如何实现自定义 VTP 处理程序的具体说明。
例如,VTP 可能包含一个清单模板网址,其中包含宏 [[STREAMID]]。在此示例中,处理程序会插入直播 ID 来代替宏,并返回生成的清单网址。
Objective-C
Swift
监听广告事件
IMAStreamManager 会调用 IMAStreamManagerDelegate 方法,以将流事件和错误传递给您的应用。
在此示例中,将主要广告事件记录到控制台:
Objective-C
Swift
清理 IMA DAI 资源
如需停止直播播放、停止所有广告跟踪并释放所有已加载的直播素材资源,请调用 IMAStreamManager.destroy()。
运行您的应用。如果成功,请使用 IMA SDK 请求并播放 Google DAI 视频流。如需了解更多高级 SDK 功能,请参阅左侧边栏中列出的其他指南或 GitHub 上的示例。