原生广告是一种广告格式,能够适应周围内容和视觉元素 使广告更有可能被用户查看和点击。原生广告 可在移动应用、桌面网站和移动网站上使用的广告资源。 如需详细了解原生广告,请参阅原生广告概览 广告。
Authorized Buyers 和 公开出价。
下面介绍了原生广告的工作流程:
- 向 Google 发出原生广告调用请求。此调用会指定 以下一个或两个原生广告模板,每个模板都指定了 原生字段
- Google 会向买方发送 RTB 出价请求,其中包含 请求的字段。
- 感兴趣的买方回应所请求的字段。
- Google 开展竞价以选择胜出的出价 买方向发布商提供的广告素材资源。
- 发布商将这些素材资源整合到一个原生广告中,并为其设置样式 与网站的设计相符
消息格式
Google 支持 OpenRTB 规范。
OpenRTB Protobuf 原生广告的以下字段与规范有所不同:
JSON 规范 (PROTOCOL_OPENRTB_2_4) |
JSON 类型 | OpenRTB 实现 (PROTOCOL_OPENRTB_PROTOBUF_2_4) |
OpenRTB 类型 |
---|---|---|---|
BidRequest.imp[].native.request |
string |
BidRequest.imp[].native.request_native |
NativeRequest |
BidResponse.seatbid[].bid[].adm |
string |
BidResponse.seatbid[].bid[].adm_native |
NativeResponse |
OpenRTB 字段是 Protobuf 消息,而不是字符串。
如果您使用 OpenRTB Protobuf 实现,那么您将不会收到
BidRequest.imp[].native.request
,且必须回复
BidResponse.seatbid[].bid[].adm_native
。出价响应数
BidResponse.seatbid[].bid[].adm
会被滤除。OpenRTB 不需要资产 ID
Protobuf 出价响应。
如果您使用买方 SDK 呈现原生广告,
执行以下操作时,您必须在 declared_ad
中添加图片 type
。
提交广告素材以供审核。
原生广告模板
Google 支持两种最常见的原生广告模板(适用于非视频广告和 视频原生广告:
- 应用安装广告模板 - 宣传 并提升移动应用安装量
- 内容广告模板 - 更通用 文字和图片组合,用于品牌广告或网络广告。
- 应用安装视频广告模板
- 视频内容广告模板
还有其他模板,但这些模板可能有一组不同的要求 字段、维度和大小
应用安装广告模板
必填字段和建议字段
下表列出了标记为必填或推荐的字段。 以下规则适用:
- 标为必填的字段是出价工具的必填字段。
- 出价方不需要使用标为推荐的字段,并且 发布商不一定会展示这些内容(例如,加注星标 评分)。
- 号召性用语 (CTA) 始终标记为推荐,因为 如果出价工具未发送同一参数,则会分配默认属性,但始终为 如果已发送,则会显示该值。
下表列出了应用安装广告模板的字段。 移动应用会使用这些字段制作原生应用安装广告。
字段 | 说明 | 必需还是推荐? | 始终显示? | 建议的图片大小/字符数上限 | 示例 |
---|---|---|---|---|---|
标题 | 应用名称 | 必填 | 是 | 25 个字符 | Flood-It! |
映像 | 应用的屏幕截图或其他相关图片 | 必填 | 否 | 1200 x 627 像素或 600 x 600 像素,具体取决于所需的宽高比 由发布商管理 | <游戏 Flood-It! 的屏幕截图> |
正文 | 应用的主要文本 | 必填 | 否 | 90 个字符 | 看似简单易上手 + 具有诱导性挑战 = 让人欲罢不能! |
应用图标 | 应用图标 | 必填 | 否 | 128 x 128 像素 | <Flood-it!应用图标> |
号召性用语 | 首选用户操作 | 推荐 | 是 | 15 个字符 | 安装 |
星级 | 代表以下角色的星数 (0 - 5) 应用在应用商店中的评分 | 推荐 | 否 | 0 - 5 人 | 4.5 |
价格 | 应用的费用 | 推荐 | 否 | 15 个字符 | 免费 |
关于文本长度的注意事项
如果买方发送的文字素材资源(如正文)长度超过 建议的最大字符数,则文本可能会被截断并 省略号。请注意,截断 对于中文、日语和韩语 上限是原来的一半例如, 标题上限为 90 个字符(英语)和 45 个字符(中文)。
有关图片大小的注意事项
发布商可以:
- 在主图片的某个尺寸(高度或 宽度)。
- 缩放图片而不更改其宽高比。
- 图片的宽高比与暗示的宽高比明显不同 可能会被滤除
内容广告模板
下表列出了内容广告模板的各个字段。发布商 使用这些字段制作原生内容广告。
字段 | 说明 | 必需还是推荐? | 始终显示? | 建议的图片大小/字符数上限 * | 示例 |
---|---|---|---|---|---|
标题 | 广告标头 | 必填 | 是 | 25 个字符 | 最低抵押贷款利率 |
映像 | 广告的主要图片 | 必填 | 否 | 1200 x 627 像素或 600 x 600 像素,具体取决于所需的宽高比 由发布商管理 | <广告的主图片> |
正文 | 广告内容 | 必填 | 否 | 90 个字符 | 布鲁克林的温馨家园 - 比您想象的更便宜,也更快! |
徽标 | 广告客户的徽标或其他相关的小图片 | 推荐 | 否 | 128 x 128 像素 | <NY Mortgage Inc. 的徽标> |
号召性用语 | 用户的首选操作 | 推荐 | 否 | 15 个字符 | 获取报价 |
广告客户 | 标识广告客户或品牌的文字 | 必填 | 否 | 25 个字符 | NY Mortgage Inc. |
应用安装视频广告模板
字段 | 说明 | 必需还是推荐? | 始终显示? | 建议的图片大小/字符数上限 * | 示例 |
---|---|---|---|---|---|
视频 | 视频 VAST 响应,其中包含播放视频广告所需的所有素材资源。 | 必需 | 否 | - | 指向 VAST XML 的网址,其中包含 Flood-It!视频广告 |
标题 | 应用名称 | 必需 | 是 | 25 个字符 | Flood-It! |
图片 | 在用户点击视频广告之前或视频广告加载期间,播放器中显示的图片(缩略图)。 | 必需 | 否 | 应与视频的宽高比相匹配(例如:对于 16x9 的视频,应匹配 1280x720;对于 640x480 的视频,应匹配 4x3)。 | 游戏 Flood-It! 的屏幕截图或者通过视频 |
身体 | 应用的主要文本 | 必需 | 否 | 90 个字符 | 看似简单、诱人挑战 = 让人欲罢不能! |
应用图标 | 应用图标 | 必需 | 否 | 128 x 128 像素 | Flood-it!应用图标 |
号召性用语 | 首选用户操作 | 必需 | 是 | 15 个字符 | 安装 |
星级 | 应用商店中代表应用评分的星数 (0-5) | 推荐 | 否 | 0 - 5 人 | 4.5 |
价格 | 应用的费用 | 推荐 | 否 | 15 个字符 | 自由 |
限制
视频:所有视频都必须采用 VAST 网址的形式 或 VAST 代码无法指定 WebM、MP4 等原始视频文件。
文字长度:如果买方指定了文字素材资源(例如
body
,则可能会被截断和省略号, Google 或发布商。请注意,截断限值是 中文、日语和韩语例如,英语标题限制为 90 45 表示中文。图片大小:发布商可以:
- 将主图片对称裁剪,使其高度(高度)不超过 20% 或宽度。
- 缩放图片而不更改其宽高比。
应用安装广告示例
视频内容广告模板
字段 | 说明 | 必需还是推荐? | 始终显示? | 建议的图片大小/字符数上限 * | 示例 |
---|---|---|---|---|---|
视频 | 视频 VAST 响应,其中包含播放视频广告所需的所有素材资源。 | 必需 | 是 | - | 指向 VAST XML 的网址,其中包含 Flood-It!视频广告 |
标题 | 广告标头 | 必需 | 是 | 25 个字符 | 最低抵押贷款利率 |
图片 | 在用户点击视频广告之前或视频广告加载期间,播放器中显示的图片(缩略图)。 | 必需 | 否 | 应与视频的宽高比相匹配(例如:对于 16x9 的视频,应匹配 1280x720;对于 640x480 的视频,应匹配 4x3)。 | 视频的屏幕截图 |
身体 | 广告内容 | 必需 | 否 | 90 个字符 | 布鲁克林的温馨家园 - 比您想象的更便宜,也更快! |
徽标 | 广告客户的徽标或其他相关的小图片 | 推荐 | 否 | 128 x 128 像素 | NY Mortgage Inc. 的徽标 |
号召性用语 | 用户的首选操作 | 必需 | 否 | 15 个字符 | 获取报价 |
广告客户 | 用于标识广告客户或品牌的文字 | 必需 | 否 | 25 个字符 | NY Mortgage Inc. |
元字段
所有受支持的广告模板都会共用以下元字段:
已授权 买方实时协议缓冲区 | 已授权 买方 OpenRTB 等效项 | 说明 |
---|---|---|
NativeAd.click_link_url |
Link.url |
用户点击广告时浏览器将调用的网址。
可能是重定向链中的第一步,该链最终指向
着陆页。对于原生广告,我们建议使用 click_link_url 作为字段来设置
用户最终到达的目的地针对这种情况,您必须使用此字段
动态着陆页。 |
Ad.click_through_url |
Bid.adomain |
如果出价工具有意出价,则必须设置此字段。这是
摘要的网址,包括用户在访问该网址时会转到的网址
用户点击展示的广告以及实际呈现的
。切勿包含与广告服务器不相关的
最终着陆页返回代码段或视频广告的 BidResponse
并声明不会舍弃任何 对于非原生广告,此参数不会用于点击跟踪或任何其他广告。 功能;它只能用作目标网址声明。 对于原生广告,如果未设置 |
NativeAd.click_tracking_urls |
Link.clicktrackers |
可选。允许广告客户跟踪 。 |
Ad.ad_choices_destination_url |
BidExt.ad_choices_destination_url |
链接到广告偏好设置或选择停用页面。如果存在标准 “广告选择”图标会添加到原生广告素材中,并链接到此网址。这个 但不包含在 出价响应。 |
Ad.impression_tracking_url |
NativeResponse.imptrackers |
跟踪原生展示时,应使用
Authorized Buyers 实时出价中的impression_tracking_url
proto 或 Native Imtracker。 |
必填字段和建议字段
required_fields
和 recommended_fields
均由发布商指定。我们将展示
转换这些位字段,以确定某个字段是必需字段还是
建议。
位字段使用二进制值的每一位来存储 true 或 false
语句,这相当于发送许多布尔值信号,如
is_logo_required
、is_header_required
等,但包含全部
打包在一起
示例
在此示例中,我们将使用 required_fields
值
1085
。
首先,找到等价的二元值:
10000111101
获得二进制值后,您可以检查各位以查看某个字段 必填 (1) 或不需要 (0)。
下表列出了各个字段在二进制值中的位置。阅读 从右到左的二进制数,其中 1 位对应最右边的位置 。
字段 | 二进制值放置(从右到左) |
---|---|
HEADLINE |
1 |
BODY |
2 |
CALL_TO_ACTION |
4 |
ADVERTISER |
8 |
IMAGE |
16 |
LOGO |
32 |
APP_ICON |
64 |
STAR_RATING |
128 |
PRICE |
256 |
STORE |
512 |
VIDEO |
1024 |
查看示例二进制值 10000111101
,即 1 位
(最右边)是 1
,表示必需的值。根据
表,1 位对应于 HEADLINE
。
2 位(即右边的第二个值)为 0
,表示
不是必需的。2 位对应于 BODY
。
以下是示例中的所有解释型必填字段:
值 | 说明 | 是否必需? |
---|---|---|
1 |
VIDEO |
是 |
0 |
STORE |
否 |
0 |
PRICE |
否 |
0 |
STAR_RATING |
否 |
0 |
APP_ICON |
否 |
1 |
LOGO |
是 |
1 |
IMAGE |
是 |
1 |
ADVERTISER |
是 |
1 |
CALL_TO_ACTION |
是 |
0 |
BODY |
否 |
1 |
HEADLINE |
是 |
NativeAdTemplate 消息
收到包含原生广告资源的出价请求时
已填充 BidRequest.adSlot[].native_ad_template。
NativeAdTemplate
消息提供了以下各项的规范:
- 必填字段或建议字段。
- 图片、徽标和应用图标的尺寸。
- 广告呈现样式的规范。
message BidRequest { //... message AdSlot { //... message NativeAdTemplate { // Defines the bits used in required_fields and recommended_fields. // There is one bit for each of the fields in BidResponse.Ad.NativeAd enum Fields { NO_FIELDS = 0x0; HEADLINE = 0x1; BODY = 0x2; CALL_TO_ACTION = 0x4; ADVERTISER = 0x8; IMAGE = 0x10; LOGO = 0x20; APP_ICON = 0x40; STAR_RATING = 0x80; PRICE = 0x100; DEPRECATED_STORE = 0x200; VIDEO = 0x400; } // Bitfield describing which fields are required by the publisher. Bid // responses with no value for these fields will be rejected. Click // and view tracking urls are always implicitly required. optional int64 required_fields = 1; // Bitfield describing which fields are recommended by the publisher. // All recommended field are supported, but not all recommended fields // are required. optional int64 recommended_fields = 2; // max_safe_length indicates the maximum number of Unicode characters that // are guaranteed to be shown without truncation. Longer strings may be // truncated and ellipsized by Ad Exchange or the publisher during // rendering. optional int32 headline_max_safe_length = 3; optional int32 body_max_safe_length = 4; optional int32 call_to_action_max_safe_length = 5; optional int32 advertiser_max_safe_length = 6; optional int32 price_max_safe_length = 15; // The width and height from which to calculate the required aspect ratio. // You can provide a larger image in the response. Images that have aspect // ratios substantially different than those implied by the height and // width may be filtered. optional int32 image_width = 7; optional int32 image_height = 8; optional int32 logo_width = 9; optional int32 logo_height = 10; optional int32 app_icon_width = 11; optional int32 app_icon_height = 12; // Globally distinct id for the specific style, HTML, and CSS with which // the native ad is rendered. optional int32 style_id = 16; // Type of style layout for each native ad template. enum LayoutType { PIXEL = 0; FLUID = 1; } optional LayoutType style_layout_type = 17 [default = PIXEL]; // If the style_layout_type is Pixel, width and height of the // entire native ad after rendering. If the style_layout_type is // Fluid, the style_height and style_width may optionally // not be populated. optional int32 style_height = 18; optional int32 style_width = 19; } repeated NativeAdTemplate native_ad_template = 51; } // NativePlacementType describes placement of native ad slot with respect to // surrounding context. enum NativePlacementType { PLACEMENT_UNKNOWN = 0; // In the feed of content - for example as an item inside the organic // feed/grid/listing/carousel. PLACEMENT_IN_FEED = 1; // In the atomic unit of the content - for example, in the article page or single // image page. PLACEMENT_ATOMIC_UNIT = 2; // Outside the core content - for example in the ads section on the right // rail, as a banner-style placement near the content, etc. PLACEMENT_OUTSIDE = 3; // Recommendation widget, most commonly presented below the article // content. PLACEMENT_RECOMMENDATION = 4; } optional NativePlacementType native_placement_type = 45; // ... }
NativeAd 消息
对原生广告资源出价时,买方必须填充
BidResponse.ad[].native_ad
并在相应的 BidRequest.adSlot[].native_ad_template
中声明必需字段。
message BidResponse { //... message Ad { //... message NativeAd { // A short title for the ad. optional string headline = 1; // A long description of the ad. optional string body = 2; // A label for the button that the user is supposed to click. optional string call_to_action = 3; // The name of the advertiser or sponsor, to be displayed in the ad // creative. optional string advertiser = 4; // Next tag to use: 4 message Image { optional string url = 1; // Image width and height are specified in pixels. You may provide a // larger image than was requested, so long as the aspect ratio is // preserved. optional int32 width = 2; optional int32 height = 3; } // A large image. optional Image image = 5; // A smaller image, for the advertiser's logo. optional Image logo = 6; // The app icon, for app download ads. optional Image app_icon = 7; // The video file. Only set this field if the video field is requested. oneof video { // The URL to fetch a video ad. The URL should return an XML response // that conforms to VAST standards. string video_url = 13; // The VAST document to be returned. string video_vast_xml = 16; } // The app rating in the app store. Must be in the range [0-5]. optional double star_rating = 8; // The URL that the browser/SDK will load when the user clicks the ad. // This can be the landing page directly, or the first step of a redirect // chain that eventually leads to it. For backward compatibility, if this // is not set, the first Ad.click_through_url is used. optional string click_link_url = 14; // The URL to use for click tracking. The SDK pings click tracking url on // a background thread. When resolving the url, HTTP 30x redirects are // followed. The SDK ignores the contents of the response; this URL // has no effect on the landing page for the user. // This field is planned to be deprecated and we are moving to the // repeated click_tracking_urls field. optional string click_tracking_url = 11; // The URLs to use for click tracking. This will be used throughout the // serving stack and will incorporate any URL in click_tracking_urls. repeated string click_tracking_urls = 15; // The price of the promoted app including the currency info. optional string price = 10; }; optional NativeAd native_ad = 18; // The set of destination URLs for the snippet. This includes the URLs that // the user will go to if they click on the displayed ad, and any URLs that // are visible in the rendered ad. Do not include intermediate calls to the // adserver that are unrelated to the final landing page. A BidResponse that // returns a snippet or video ad but declares no click_through_url will be // discarded. Only set this field if html_snippet or video_url or native_ad // are set. This data is used as a destination URL declaration, for example // for post-filtering of publisher-blocked URLs or ad categorization. // // For non-native ads, it is not used for click tracking or any // other ad functionality; it is only used as a destination URL // declaration. // // For native ads, if NativeAd.click_link_url is not set, the first // value of click_through_url is used to direct the user to the landing // page. In addition, all values are used as destination // URL declarations (similar to the non-native case). repeated string click_through_url = 4; //... // The URLs to call when the impression is rendered. The SDK pings // impression urls on a background thread and ignores the contents // of the response. repeated string impression_tracking_url = 19; // Link to ad preferences page. This is only supported for native ads. // If present, a standard AdChoices icon is added to the native ad creative and // linked to this URL. optional string ad_choices_destination_url = 21; // ... } }
出价请求示例
非视频广告出价请求
OpenRTB JSON
OpenRTB 协议缓冲区
视频广告出价请求
<ph type="x-smartling-placeholder">出价响应示例
请注意,这些响应中的值与 上述相应要求。不过,如果要求中的模板建议采用必需/可选 字段,此处的响应符合这些要求。