利用 PPS 改进广告系列

请选择平台HTML5 Android iOS tvOS Cast Roku

您可以在广告请求中,将受众群体和情境数据作为 发布商提供的信号 (PPS) 进行发送。借助 PPS,您可以通过标准类目,将您的受众群体特征传递给所有 交易类型中的出价方,从而利用您的用户数据提升 程序化变现能力,而且无需分享用户标识符。您的受众群体 特征可能包括行为数据和兴趣数据( IAB 受众群体类目 1.1)以及 情境数据( IAB 内容类目 2.2)。 您还可以发送由 Google 定义的发布商提供的结构化信号,并允许发送其他信号。

构建用户信号 JSON

在顶层,创建一个包含单个键值对的 JSON 对象。键应为 PublisherProvidedTaxonomySignals,其值应为对象数组。数组中的每个对象都应包含 2 个键值对:

  • taxonomy 键,它接受映射到以下 IAB 公共规范的以下值:

    • IAB_AUDIENCE_1_1,适用于受众群体类目 1.1
    • IAB_CONTENT_2_2,适用于内容类目 2.2
  • values 键,其中包含相应的字符串类目值数组。

构建结构化信号数组

对于结构化信号,请添加 PublisherProvidedStructuredSignals 键,其值为对象数组。根据以下信号键值列表构建对象:

切换结构化信号表的视图

信号 <code" dir="ltr" translate="no">"type" Value</code"> 可能的 "single_value" 可能的 "values"
音频 Feed 类型 "audio_feed"
  • "af_1":音乐
  • "af_2":广播
  • "af_3":播客
内容分级 "content_rating"
  • "cr_1":G
  • "cr_2":PG
  • "cr_3":T
  • "cr_4":MA
内容传送 "delivery"
  • "cd_1":流式
  • "cd_2":渐进式
  • "cd_3":下载
制作质量 "prodq"
  • "pq_1":专业制作
  • "pq_2":专业消费者
  • "pq_3":用户生成的内容 (UGC)

请参阅以下示例,该示例使用 IAB_AUDIENCE_1_1IAB_CONTENT_2_2 作为类目信号,并包含结构化信号。

const userSignals = {
  "PublisherProvidedTaxonomySignals": [{
     "taxonomy": "IAB_AUDIENCE_1_1",
     "values": ["6", "284"]
     // '6' = 'Demographic | Age Range | 30-34'
     // '284' = 'Interest | Business and Finance |  Mergers and Acquisitions'
  },
  {
     "taxonomy": "IAB_CONTENT_2_2",
     "values": ["49", "138"]
     // '49' = 'Books and Literature | Poetry'
     // '138' = 'Education | College Education | College Planning'
  }],
  "PublisherProvidedStructuredSignals": [{
      "type": "audio_feed",
      "single_value": "af_1",
    },
    {
      "type": "delivery",
      "values": ["cd_1", "cd_3"],
    },
  ],
};

配置流请求

请按照以下步骤使用 IMAStreamRequest发送 PPS:

  • 使用用户的兴趣、行为或情境数据创建 JSON 字符串。
  • 根据上面的 JSON 字符串创建 Base64 编码的 ASCII 字符串。
  • 使用编码后的字符串添加 IMAStreamRequest.adTagParameters
let userSignals = """
{
   "PublisherProvidedTaxonomySignals": [
    {
      "taxonomy": "IAB_AUDIENCE_1_1",
      "values": [
        "1",
        "284"
      ]
    }
  ],
}
"""
let base64Signals = Data(userSignals.utf8).base64EncodedString()
var encodedSignals = base64Signals.replacingOccurrences(of: "+", with: "%2B")
encodedSignals = encodedSignals.replacingOccurrences(of: "/", with: "%2F")
encodedSignals = encodedSignals.replacingOccurrences(of: "=", with: "%3D")

streamRequest.adTagParameters = { "ppsj" : encodedSignals}