# 视频广告

> 通过 Unity Exchange 投放视频广告以确保质量和效果。

视频广告投放模板 ([VAST](https://www.iab.com/wp-content/uploads/2016/04/VAST4.0_Updated_April_2016.pdf)) 是用于将广告投放到数字视频播放器的通用 XML 架构。Unity 支持 VAST 4.0（由美国互联网广告局 ([IAB](https://www.iab.com/)) 开发和维护的标准），并且向后兼容 2.0（某些功能除外）。

Unity SDK 会解析 VAST XML 以获取视频媒体文件和追踪 URL。

请确保遵循这些要求：

* VAST `<InLine>` 必须包含展示视频广告所需的所有元素。如需了解更多信息，请参阅 [VAST 指南](https://www.iab.com/wp-content/uploads/2016/04/VAST4.0_Updated_April_2016.pdf)的**第 3.4 节**。
* 支持的 `<MediaFile>` 类型为 `video/mp4`。应包括 `bitrate`、`delivery`、`width` 和 `height` 属性。如需了解更多信息，请参阅 [VAST 指南](https://www.iab.com/wp-content/uploads/2016/04/VAST4.0_Updated_April_2016.pdf)的**第 3.9 节**。
* 视频时长必须在 5 到 30 秒之间。
* 最多可以将 VAST 标签封装五次。
* 在初始视频广告结束或跳过后，结束页广告必须是全屏显示。
* 所有 HTML 标记必须使用包含 `https://` 和域的绝对 URL 路径引用外部托管资源。从 `file://` 或相对 URL 路径指向资源不起作用。

请提供不同规格的视频文件，以适应不同的环境：

* 最大视频文件大小为 20 MB。
* 采用 WIFI 连接时，视频播放器将选择 5 MB 到 10 MB 之间的文件。
* 采用蜂窝网络连接时，视频播放器将选择 0.5 MB 到 3 MB 之间的视频文件。
* 尽可能针对竖屏/横屏模式提供相应规格的视频文件。

## 可跳过视频广告##skippable-video-ads

发布者可以决定用户是否可以跳过其应用内的视频广告。大多数的可跳过广告，均会要求用户观看广告开头的固定几秒后（具体时间由发布者决定）才可跳至结束页。由于大多数的可跳过广告允许用户跳至结束页，Unity 强烈建议您为视频广告添加结束页。欲了解更多关于可跳过与不可跳过广告的库存，可联系您的客户经理。

## 视频控件##video-controls

Unity 的视频控件覆盖层将在视频播放时渐入视野。用户可以通过点击屏幕隐藏或再次显示它。此覆盖层包括屏幕底部进度条、隐私图标和行动号召按钮 (CTA)。可能包括右上角的关闭按钮或左上角的跳过图标。

### 视频点击支持##video-click-support

VAST 标签必须在 `<ClickThrough>` 节点中包含单个视频点击跳转链接，并可以在各自的 `<ClickTracking>` 节点中包含多个点击追踪链接。如需了解更多信息，请参阅 [VAST 指南](https://www.iab.com/wp-content/uploads/2016/04/VAST4.0_Updated_April_2016.pdf)的**第 3.10 节**。

请确保遵循这些要求：

* 点击跳转 URL 应在各自平台上使用 `https://`、`market://`、` itunes://` 或 `itms://` 前缀。
* Unity 强烈建议使用服务器端重定向/跳转，而不是附加冗长的链接。
* Unity 不支持采用 `tel://` 前缀的点击呼叫广告。
* 点击包装器可以包含额外的点击追踪。

### 视频行动号召按钮 (CTA)##video-ctas

在视频播放过程中，屏幕右下角会出现一个行动号召按钮 (CTA)。用户必须点击按钮才能触发点击事件并打开 `<ClickThrough>` URL。行动号召按钮 (CTA) 默认显示为“Learn More（了解更多）”。如果广告素材的广告返回中存在 Bundle ID，则行动号召按钮 (CTA) 将显示“Install Now（立即安装）”。

![视频广告上的 Install Now call-to-action 按钮。](/api/media?file=/grow/media/images/install-now-cta.png)

![视频广告上的 Learn More 号召行动按钮。](/api/media?file=/grow/media/images/learn-more-cta.png)

#### 行动号召按钮 (CTA) 图标##cta-icons

VAST 3.0 及更高版本支持使用图标。如果广告返回中包含 Bundle ID，则在视频播放期间，Unity 视频播放器会在“Install Now（立即安装）”按钮旁边显示一个方形图标。您可以在 VAST 标签中嵌套自定义图标。如需了解更多信息，请参阅 [VAST 指南](https://www.iab.com/wp-content/uploads/2016/04/VAST4.0_Updated_April_2016.pdf)的**第 3.11 节**。

图标应表示所推广的应用或游戏。Unity 不支持在视频上显示任何其他图标。请确保遵循这些图标要求：

* 图标应该是 `<StaticResource>` 图像，带有 `.png`、`.jpg` 或 `.jpeg` 扩展名。
* 图标将显示为 25 x 25 像素的正方形。
* Unity 不支持图标持续时间和 `<IconClickThrough>` 功能。

```xml title="Example CTA icon code"
<Icons>
	<Icon width="25" height="25">
	<StaticResource creativeType="image/png">
		<![CDATA[ https://Unity.com/DSP/square_icon_name ]]>
	</StaticResource>
	</Icon>
</Icons>
```

所有结束页广告都应包含符合以下尺寸要求的 `height` 和 `width` 属性：

* 正方形广告：最小宽/高均为 200 像素。
* 横屏广告：最小宽/高为 480 x 320 像素。
* 竖屏广告：最小宽/高为 320 x 480 像素。

## 结束页广告##companion-ads

视频播放完毕后，VAST 结束页广告以全屏结束页的形式出现。推荐的最佳实践是使用结束页广告来最大限度提高点击率。大多数发布者都允许跳到结束页，因此即使是可跳过的广告库存也会在用户退出广告体验之前显示结束页。

### 结束页广告点击支持##companion-click-support

在显示结束页后，用户可以点击屏幕上的任意位置来触发点击 `<CompanionClickTracking>` 和 `<CompanionClickThrough>` 相关事件。结束页上不放置 Unity 行动号召按钮 (CTA)。

如需了解更多信息，请参阅 [VAST 指南](https://www.iab.com/wp-content/uploads/2016/04/VAST4.0_Updated_April_2016.pdf)的**第 3.13 节**。

### 结束页资源类型##end-card-resource-types

| **类型**             | **描述**                                                                     | **注意**                                                                                                                                                                                             |
| ------------------ | -------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `<HTMLResource>`   | HTML 标记。                                                                   | * 标记中不应包含自定义的关闭按钮。
* 支持 [MRAID](/grow/programmatic/unity-exchange/playable-ads.md)。
* 广告素材标记应在 HTML 或 Javascript 中包含点击函数而不是在 `<CompanionClickThrough>` 元素中包含。
* Android 设备认为 HTML 结束页的优先级高于其他资源类型。 |
| `<StaticResource>` | 要在 `<img>` 标签中显示的资源，例如 `image/jpeg`、`image/jpg`、`image/gif` 或 `image/png`。 | - 在 `<CompanionClickThrough>` 元素中提供点击 URL。                                                                                                                                                         |

## 支持的 VAST 4.x 宏##supported-vast-4.x-macros

以下列表详细介绍了 Unity 支持的 VAST 4.x 宏（如果跟踪 URL 中提供了这些宏）：

* `[ERRORCODE]`
  * 请参阅[错误代码](#error)。
* `[OMIDPARTNER]`
  * OM SDK 集成的标识符。
  * 这与 `OMIDPartner` 对象的 `name` 和 `versionString` 参数相同。
* `[REASON]`
  * 无法执行验证的原因代码。
* `[TIMESTAMP]`
  * （时间戳）
* `[IFA]`
  * 来自针对特定设备的广告 ID 方案的可重置广告 ID，如 Apple 的广告商 ID 或 Android 的广告商 ID，采用 UUID 格式或基于 [Guidelines For Identifier For Advertising On OTT Platforms](https://iabtechlab.com/standards/guidelines-identifier-advertising-over-the-top-platforms/)（OTT 平台广告标识符指南）中的 IAB 文档。
* `[IFATYPE]`
  * 一个字符串值，表示 `[IFA]` 宏中包含的 IFA 类型。
* `[APIFRAMEWORKS]`
  * 播放器支持的框架列表。
  * 这些值在 AdCOM 1.0 API 框架列表中定义。
* `[APPBUNDLE(required)]`
  * 对于应用广告，此为针对特定平台的应用程序标识符、捆绑包或软件包名称。该标识符不能是应用商店 ID，如 Apple App Store ID。
    * 在需要且适用但未知或不可用的情况下，设为 -1 或 -2。
    * 如果需要但不适用（例如在应用中），则设为 0。

## 故障排除##troubleshooting

### 较低的展示量##low-impressions

如果您觉得特定视频广告系列或广告素材的胜率较高但展示量相对较少，请考虑以下情况：

| **原因**                                      | **建议操作**                                                                                              |
| ------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| 封装后的 VAST 标签指向一个不返回任何 XML 的 `VASTAdTagURI`。 | 确认广告系列已启用。收到后的媒体文件最多会缓存两个小时。                                                                          |
| 视频文件太大                                      | 至少提供一个小于 20 MB 的媒体文件。                                                                                 |
| 平台或移动端浏览器无法播放媒体文件。                          | 验证媒体文件和追踪 URL 是否是安全协议 HTTPS。在 URL 末尾包含文件扩展名，例如 `.mp4`。尽管 URL 中不需要文件扩展名，但这样做可以减少在移动端浏览器中出现 MIME 类型的报错。 |

### 点击跳转 URL##click-through-urls

如果视频点击跳转 URL 在查询字符串中包含正斜杠 (`/`) 或加号 (`+`)，这些符号将使用对应的 UTF-8 格式进行 URL 编码。这样就可能会干扰某些点击重定向并导致展示量减少。

> **Note:**
>
> 查询字符串是 URL 中第一个问号 (`?`) 之后的部分。

| **字符** | **UTF-8 代码** |
| ------ | ------------ |
| `/`    | `%2F`        |
| `+`    | `%2B`        |

例如：

`https://domain.com/anything_here_is_fine?this_is_a/query+string`

编码为：

`https://domain.com/anything_here_is_fine?this_is_a%2Fquery%2Bstring`

如果您的点击跳转 URL 包含特殊字符，请确保这些字符在经过 Unity 的编码后仍然有效（可正确解析或重定向）。

### 错误代码##error

Unity 将 VAST 错误发送到 VAST 标签的 `<Error>` 追踪 URL，并将 `[ERRORCODE]` 宏替换为以下错误代码之一。这些错误发生在广告即将展示或已经展示时。

| **代码** | **描述**                  |
| ------ | ----------------------- |
| `100`  | XML 解析错误。               |
| `101`  | VAST 架构验证错误。            |
| `102`  | 不受支持的 VAST 版本。          |
| `200`  | 不受支持的 VAST 格式。          |
| `202`  | 视频时长过长或格式不是 `HH:MM:SS`。 |
| `300`  | 包装器错误。                  |
| `301`  | 一个 `VastAdTagURI` 超时。   |
| `302`  | 超出包装器数量上限（五个）。          |
| `303`  | 解包后未找到 `<Ad>`。          |
| `401`  | 未找到支持的媒体文件。             |
| `402`  | 媒体文件 URI 超时。            |
| `403`  | 不支持的媒体文件。               |
| `404`  | 媒体文件 URI 在 iOS 上不受支持。   |
| `499`  | 无点击跳转 URL。              |
| `600`  | 一般结束页广告错误。              |
| `601`  | 不支持该结束页广告尺寸。            |
| `602`  | 无法显示结束页广告。              |
| `603`  | 无法获取结束页广告资源。            |
| `604`  | 未找到有效的结束页广告资源 URL。      |
| `699`  | 结束页广告未包含有效的点击跳转 URL。    |
| `900`  | 未定义的错误。                 |
| `998`  | VAST XML 内容包含无效的 URL。   |
| `999`  | 未知错误。                   |
