IOS Vast Client
IOS Vast Client是一个Swift框架,实现了VAST 4.0规范。
该项目仍在开发中,处于非常早期阶段。在这个项目中,我们将只针对VAST规范的一部分以满足我们的即时需求。我们不推荐在此时间使用此库。
特性
- VAST 4.0 规范兼容,向后兼容Vast 3.0
- Vast XML 解析器和验证器
- VAST 点击和广告跟踪
- VAST 错误跟踪
API文档
iOS Vast Client包含2个供公众使用的接口。
VastClient
从URL获取并解析VAST文件。您可以在初始化VastClient时使用VastClientOptions
自定义行为。如果您想缓存VMAPModel以防止重复调用,将shouldCacheVMAPModel
的值改为true。
VastClient
的结果是结构体VastModel
或如果是获取失败则是Error
。您应该将此模型传递给VastTracker
。
VastTracker
处理广告四分位数的跟踪。执行广告/广告插播的跟踪。通过代理调用通知四分位状态更新。
初始化
使用VastModel
结构初始化VastTracker
,但始终确保使用通过代理函数调用提供的实际VastAd
和其他信息——不要保留VastModel
,因为VastModel
中的所有信息可能不一定适用于播放等。
进度和广告跟踪
func updateProgress(time: Double) throws
初始化VastTracker
后,您应使用参数 time = playhead
调用此函数以开始跟踪过程。播放头应匹配在VastTracker
初始化中使用的播放头值。(如果您只想在内容之前播放预滚动广告,使用playhead = 0
初始化VastTracker
并使用 time = 0
调用 updateProgress(time:)
)
您必须在广告播放期间定期调用此函数。
您的客户端必须跟踪广告/广告插播的开始和结束。您可以通过以下方式将此信息传递给Vast Tracker
func trackAdBreakStart(for adBreak: VMAPAdBreak)
func trackAdBreakEnd(for adBreak: VMAPAdBreak)
func trackAdStart(withId id: String) throws
func trackAdComplete() throws
VastTracker
将跟踪四分位更新,同时在调用func updateProgress(time: Double) throws
时。
这些代理函数将在正常广告播放期间被调用,您不需要对此做出反应——它们仅用于通报信息。
func adFirstQuartile(vastTracker: VastTracker, ad: VastAd)
func adMidpoint(vastTracker: VastTracker, ad: VastAd)
func adThirdQuartile(vastTracker: VastTracker, ad: VastAd)
其他跟踪
在广告插播期间,用户或系统可能会调用其他操作。VastTracker
支持跟踪这些操作
public func paused(_ val: Bool)
public func fullscreen(_ val: Bool)
public func rewind()
public func muted(_ val: Bool)
public func acceptedLinearInvitation()
public func closed()
public func clicked() -> URL?
public func clickedWithCustomAction() -> [URL]
public func error(withReason code: VastErrorCodes?)
支持标签
状态
- 未解析
- 已解析但当前未使用,可以被主机应用使用
- 部分支持 - 部分支持,可能缺少边缘情况
- 完全支持 VAST 标签
标签 | 状态 | 备注 |
---|---|---|
VAST | 完全 | - |
广告 | 部分 | 支持单个和 AdPods,AdBuffet 被视为单个广告 |
内联 | 完全 | - |
广告系统 | 已解析 | |
广告标题 | 完全 | |
印象 | 已解析 | |
类别 | 已解析 | |
描述 | 已解析 | |
广告商 | 已解析 | |
定价 | 已解析 | |
调查 | 已解析 | |
错误 | 完全 | 主机应用需要初始化错误跟踪 |
可测量印象 | 完全 | 主机应用需要在适当时间调用适当的跟踪函数 |
创意 | 完全 | |
创意 | 完全 | |
通用广告 ID | 已解析 | |
创意扩展 | 已解析 | |
创意扩展元素 | 已解析 | |
线性 | 完全 | |
持续时间 | 完全 | |
广告参数 | 已解析 | 但仅作为字符串 - 这可能是需要验证的 XML 内容 |
媒体文件 | 完全 | |
媒体文件 | 已解析 | 由主机应用处理播放 |
中继 | 未解析 | |
交互式创意文件 | 已解析 | |
视频点击 | 完全 | 主机应用必须初始化点击跟踪事件 |
点击通过 | 完全 | |
点击跟踪 | 完全 | |
自定义点击 | 部分 | 主机应用可以通过跟踪器跟踪自定义点击,但功能未指定 |
图标 | 部分 | 未解析 iFrame 和 HTML 资源 |
图标 | 完全 | 主机应用需要处理图标放置、可见性和图标点击 |
图标查看跟踪 | 已解析 | 未实现查看动作跟踪 |
图标点击 | 完全 | |
图标点击通过 | 完全 | |
图标点击跟踪 | 完全 | |
非线性广告 | 未解析 | 不支持子元素 |
伴随广告 | 未解析 | 不支持子元素 |
包装器 | 完全 | |
VASTAdTagURI | 已解析 | |
伴随广告 | 已解析 | |
伴随对象 | 已解析 | 所有子元素已解析,但 CompanionClickTracking 不支持 id 属性 |
入门指南
查看 VastClientWrapper 项目以获取示例实现
贡献
请阅读 CONTRIBUTING.md 了解我们的行为准则和向向我们提交拉动请求的流程。
许可
本项目采用MIT许可证 - 详细内容请参阅LICENSE文件