Protected Audience:集成指南

Android 实现方案中的 Protected Audience(以前称为 FLEDGE)通常涉及广告主应用、发布商应用、卖方和买方之间的集成。本指南面向计划管理自定义受众群体和开展竞价的合作伙伴,包括同时作为买方和卖方运营的广告技术联盟。不同的广告系列可以有不同的目标,并且并非所有 Protected Audience 功能都适用于所有用例。本指南将尝试描述需要执行哪些步骤来支持更具体的用例。

为了给 Protected Audience 的大规模生产部署做好准备,合作伙伴可以开始通过模拟与其他方的集成点来进行测试。为帮助您制定集成计划,本指南全面介绍了如何集成 Protected Audience 与 Android 应用。其中可能包括 Privacy Sandbox on Android 开发者预览版当前阶段尚未实现的功能。对于此类情况,我们提供了时间表指导。

Protected Audience 集成工作流包含 4 个由不同类型的广告技术合作伙伴驱动的关键步骤:

  1. 买方创建自定义受众群体。
  2. 广告选择流程选择胜出的广告。
    1. 卖方的应用发起广告选择。
    2. 广告服务执行买方过滤和出价代码。
    3. 广告服务执行卖方决策代码。
  3. 在卖方的应用中呈现胜出的广告。
  4. 向买方和卖方发布广告展示次数报告。

下图说明了这些步骤:

广告选择工作流的直观示意图。
图 1:Protected Audience 自定义受众群体管理和广告选择工作流程。

术语

  • 广告主:通过购买广告资源来吸引用户的公司。
  • 发布商:拥有内容并销售这些内容旁边的可用广告资源的公司。
  • 买方:协助广告主购买广告资源的广告技术公司。
  • 卖方:协助发布商销售广告资源的广告技术公司。
  • 广告联盟:既是买方又是卖方的广告技术公司。
  • 自有自营:既是发布商又是卖方和买方的公司。
  • 集成合作伙伴:您为了成功与 Protected Audience 集成而需要合作的任何公司。

前提条件、集成合作伙伴互动和设置

本部分概述了一系列初始活动,旨在帮助您了解 Protected Audience 的工作原理、如何开始实现 Protected Audience 集成,以及如何与您的集成合作伙伴共同推动 Protected Audience 实现。这些活动可以并行推进。

示意图:Protected Audience 功能部署指南。
图 2:Protected Audience 功能部署指南。

熟悉 Protected Audience

第一步是熟悉 Protected Audience API 和服务。

  1. 首先阅读设计提案,熟悉 Protected Audience API 及其功能。
  2. 阅读开发者指南,了解如何引入您的用例需要的代码和 API 调用以及与 Protected Audience 集成所需的服务。
  3. 提交与 Protected Audience API、服务和文档的设计和实现相关的反馈
  4. 注册以接收最新动态,及时了解最新的 Privacy Sandbox 功能。

设置和测试示例应用

熟悉上述 Protected Audience 基础知识后,您应设置并测试示例应用。

  1. 当准备好开始集成时,请使用最新的 Privacy Sandbox 开发者预览版来设置开发环境。
  2. 设置所需的服务器端点。结合使用示例模拟与您的首选 API 测试解决方案来引导此过程。
  3. 对我们的示例应用中的代码进行复刻并运行代码,以便熟悉自定义受众群体管理、广告选择工作流和展示次数报告。

集成合作伙伴互动

安排与您的集成合作伙伴进行会谈,讨论 Protected Audience on Android 的测试和采用,包括各方之间传递的信号的形状。对于买方,讨论应包含创建和加入自定义受众群体的策略,其中可以包括有关如何定义受众群体的讨论。与您的集成合作伙伴协作制定集成时间表,涵盖从初始测试到采用的整个过程,以及各方在设计中负责的领域。

Beta 版设置(第 4 季度推出)

向 Privacy Sandbox on Android 注册您的组织。需要通过注册来确保广告技术开发者遵守 Privacy Sandbox 的政策,并允许广告技术开发者在多个 SDK 和网域中定义其身份。

架构注意事项

Protected Audience 同时面向买方和卖方推出了在设备上运行广告竞价的功能。您和您的集成合作伙伴应在设计中考虑一些关键因素:

受众群体和再营销广告存储在设备上

目前,广告完全存储在服务器上。与此不同,受众群体信息和再营销广告则是存储在设备上。不依赖设备内数据进行定位的内容相关广告将继续保留在服务器上。广告技术平台需要扩展以考虑分布在服务器和设备之间的广告需求。

出价和竞价过程在设备上完成

除了在服务器上进行竞价之外,广告技术平台现在也有机会对存储在设备上的广告需求进行定价和排名。

一种常见的方法是,广告技术平台会对内容相关广告进行竞价(这也是现行方式)。完成竞价后,卖方可以选择在设备上运行竞价,以评估设备上存储的再营销需求。由于这些流程现在都是在设备上运行,请务必注意已建立的现有限制,以确保在各种再营销用例中都能按照不同集成合作伙伴的设计来端到端运行竞价。

数据策略

广告技术平台应考虑竞价中使用的数据类型。如今,系统将从各种来源收集这些信息,然后集中存储在服务器上。Protected Audience 竞价提供了一些不同的路径传入这些数据。例如:剩余预算之类的实时信号来自键值对服务(作为可信信号),而时段等情境信号则由卖方在竞价时发送。本指南的相关部分更详细地介绍了这些信号。

构建解决方案

使用 Protected Audience 开展竞价需要经历几个关键阶段。买方需要构建受众群体、提供出价数据、将广告定位到受众群体并设置出价。卖方需要配置和触发竞价、为候选广告评分并选择胜出者。其中一些阶段需要双方开展协作,以确保可以正确执行竞价过程。下面几个部分将详细介绍每个阶段,并明确指出哪一方将负责实现工作。

买方:构建受众群体

买方通常管理自定义受众群体。由于自定义受众群体的管理过程发生在设备上,因此用于管理自定义受众群体的 API 是在设备上调用的。

如果广告主应用中有您自己的 SDK,您可以通过 joinCustomAudience() 来直接实现此代码。

如果设备上没有您自己的 SDK 代码,您可以考虑与同时也是 SDK 提供商的现有集成合作伙伴开展合作。确定此合作伙伴并与其开展合作,共同制定合同以及用于定义和管理自定义受众群体的流程。无论采用哪种方法,本指南均使用“买方”这一术语。下面提供了一些示例方法:

  • 作为买方,请让广告主定义受众群体。设备上的集成合作伙伴 SDK 可以向买方发送应用事件。当满足预定义条件时,买方向 SDK 发送消息,以便以买方身份加入客户端上的自定义受众群体。
  • SDK 可以直接拥有受众群体。广告主与 SDK 提供方协作定义受众群体。SDK 监控应用事件,在适当的时间加入受众群体,并向买方告知用户已加入受众群体。

对再营销广告系列进行原型设计:设计自定义受众群体

自定义受众群体是由具有相似兴趣,且允许个性化广告的用户构成的群组。买方可以帮助广告主根据用户活动在应用中构建自定义受众群体。

Protected Audience 会为自定义受众群体创建一个容器,该容器映射到广告主定义的特定自定义用户互动。其中包括可向该受众群体展示的一系列候选广告,以及可在竞价期间用于对广告进行过滤和定价的一系列自定义出价逻辑和数据。

设置和原型设计

设计注意事项

买方可通过配置自定义受众群体来支持各种用例。这包括为以此受众群体为目标的广告或广告系列定义出价逻辑、定义候选广告列表,以及一些类似的注意事项。本部分介绍了在自定义受众群体中填充和使用某些关键字段时要关注的一些设计注意事项。

出价逻辑网址

由于竞价过程在设备上执行,因此买方需要部署一个端点,该端点能够以 JavaScript 的形式返回出价逻辑。我们的开发者指南介绍了所需的方法签名。出价逻辑可以在竞价期间访问关于用户的某些信号(如以下部分所述)。本文稍后部分详细介绍了出价逻辑和用户信号设置。

用户出价信号

买方可以使用 UserBiddingSignals 将广告主或买方本身拥有的用户相关信息传入到设备上的未来竞价中。这可能包括广告主拥有的关于用户的第一方数据洞见等信息。

由于这些信号在竞价期间可用,因此买方可以在竞价期间执行自定义出价操作,包括:

  • 根据出价信号提高或降低出价。
  • 从竞价中滤除特定广告。

可信出价数据

作为 Protected Audience 实现方案的一部分,买方可以在竞价期间通过键值对服务访问实时信息。作为一种临时机制,买方和卖方可从任何服务(包括他们自己运营的服务)提取这些出价信号。最常见的示例是查询广告的剩余预算。在开发期间,您可以模拟此服务,并且可以根据此模拟端点进行开发。如需查看设置说明,请参阅 GitHub 上的示例应用代码库中的 FledgeServerSpec 目录。

TrustedBiddingData 字段由一个网址和一组键组成。在设计要使用的键结构时,请注意以下事项:

  • 一种简单的方法是添加一个键,并通过该键 1:1 映射到所创建的受众群体。然后,键值对服务可以包含与受众群体相关联的所有相关信息。
  • 预算和广告状态是需要实时考虑的重要因素。
  • 可在竞价中用于对广告进行定价的最高出价或其他信号。您可以将广告的这些信息包含在 AdData 列表中,但通过将这些信息存储在键值对服务中,您可以根据需要更轻松地进行更新。

AdData 列表

在制作再营销广告系列时,广告主通常会考虑向受众群体中的用户展示多种不同类型的广告,例如根据用户与应用的互动历史记录来推广不同的折扣。自定义受众群体包含用于存放候选广告的 AdData 列表。

为每个广告包含的信息量由买方决定。需要注意的一些事项:

  • 可以通过以下两种方式来更新 AdData 列表:
    • 当应用在前台运行可见 activity 时,它可以在将用户加入自定义受众群体时启动该列表。
    • 每日更新期间,系统会在后台启动提取操作。设备向 joinCustomAudience 调用中包含的 daily_update_url 发送请求,并预期收到包含更新后的 AdData 列表的响应。
  • 您可以在竞价时请求有关广告的更多信息。在竞价之前,设备会向 joinCustomAudiencetrustedBiddingData 字段中提供的买方键值对服务发送请求。键值对服务是一项新服务,属于买方的 Protected Audience 实现方案的一部分。下文中详细介绍了此服务。
  • 为广告添加广告素材 ID 有助于您对特定广告素材执行一些操作。例如,广告主可能会暂停特定的广告素材,并且您希望从实时键值对服务中提取这些广告素材 ID,然后将其与 AdData 列表中的广告进行匹配。

AdData 应包含 render_url。胜出的再营销广告的呈现网址用于呈现广告。以下是一些注意事项:

  • 呈现网址具有 k-匿名性阈值,因此请避免包含窄 (narrow) 参数。有关此 k-匿名性阈值的详细信息将于稍晚时间发布。
  • 此网址应包含呈现广告所需的所有信息。例如,如果您希望显示指定商品,请将商品 ID 作为参数嵌入到网址中。

在进行原型设计时,唯一的必填字段是 renderUri,它指向广告的呈现素材资源。在创建解决方案时,您可以忽略 AdData 中的元数据字段。在将解决方案移入生产环境时,您应当考虑哪些元数据与您相关,因为您可以在出价生成期间使用一些相关的元数据来调整出价。

激活时间和过期时间

在一些用例中,自定义受众群体仅在预定义的时间段内符合竞价条件,而您可以使用激活时间和过期时间字段来支持这些用例。 请注意,激活时间可以延迟多长时间以及激活时间与到期时间时间之间的增量存在限制。示例用例包括:

  • 流失用户(例如,过去 7 天内未与广告主的应用互动过的用户)
    • 每次用户打开应用时,买方都可以调用 joinCustomAudience 并将 activation_time 配置为未来 7 天。
    • 如果距离用户上次打开应用已有 7 天,则受众群体符合出价条件。
  • 季节性受众群体(仅在未来短期内的特定时间范围内有效的受众群体)
    • 买方可以开始提前定义自定义受众群体,指定这些受众群体仅在未来(短期内)的预定时间段符合出价条件。
    • 例如,如果广告主要在 2022 年结束美国的某个夏季广告系列,其买方可以调用 joinCustomAudience 并将 activation_time 配置为 2022 年 8 月 20 日(星期六)。如果广告系列仅投放一周,买方可以将失效日期设置为 2022 年 8 月 27 日,在此日期后,平台会在广告选择过程中滤除自定义受众群体,并最终进行垃圾回收。

买方和卖方:广告选择

广告选择需要买卖双方之间开展协作。此过程可以分为以下四个步骤:

  1. 卖方定义中介策略。
  2. 卖方配置竞价并启动广告选择。
  3. 买方受邀通过卖方定义的配置参与竞价。系统执行买方的出价逻辑以选择候选广告和出价。
  4. 系统执行卖方决策逻辑,以对候选广告进行评分并选择胜出的广告。

为了简化开发,您可以为买方和卖方模拟服务响应(包括出价和评分逻辑),以便您可以专注于开发与您的用例相关的内容。如需了解如何设置模拟端点,请参阅 GitHub 上的 FledgeServerSpec 目录;如需了解如何替换对远程 JavaScript 提取的需求,请参阅开发者指南

卖方:定义中介策略

Protected Audience 旨在支持广告瀑布流中介。此功能正在开发中,我们将在未来提供更多相关信息。目前,请参阅 Protected Audience 广告瀑布流中介的设计提案

卖方:配置竞价

卖方负责配置竞价,并提供广告选择流程的相关信息。卖方可以选择向所有相关方或仅一部分选定相关方提供信息。这可能包括您拥有的信息或您代表买方添加的信息。

设置和原型设计

设计注意事项

本部分介绍了在广告选择配置中填充和使用关键字段时要关注的一些设计注意事项。

  • 由于专用执行环境仅包含设备上的自定义受众群体广告,因此您可以提前发出内容相关广告请求,以便于考虑额外的需求。
  • 在启动广告选择工作流程之前,请运行广告请求以收集来自买方的信息。然后,使用这些信息来配置广告选择。

  • 由于许多买方可能在设备上创建了自定义受众群体,因此卖方需要使用自定义受众群体买方字段来指明要在流程中纳入的特定买方。可以通过多种方式来构建此列表。部分示例如下:

    • 卖方始终希望在流程中添加的静态买方列表。
    • 表明希望参与广告响应的买方列表。 如果卖方与广告交易平台合作,并且未掌握所有买方的全面信息,则此选项非常有用。
  • 卖方可以通过以下几种方式向流程传入信息:

    • 广告选择信号字段适用于所有在专用运行时中参与竞价的买方和卖方。使用该字段提供广告机会的相关信息,如广告尺寸和广告格式。
    • 每个买方信号字段会转发给特定买方,以便在其出价过程中使用。此信息由买方提供,而您作为卖方则需要考虑如何获取这些设备端信息,以便在广告选择过程中使用。
    • 卖方信号字段是卖方向流程传递信息的最后一种方法。您作为卖方在对广告进行评分和过滤(例如启用品牌保障检查)时会使用这些信号。

买方:对广告位出价

设置和原型设计

  • 在构建 CustomAudience 时,买方可以将其出价逻辑添加到通过 biddingLogicUrl 参数集提供的 generateBid() JavaScript 函数中。您可以使用提供的规范来设置模拟服务,也可以在真实服务器上实现此端点。
  • 如需详细了解实现和 API 用法,请参阅开发者指南

设计注意事项

  • 出价逻辑将在设备上执行,系统会实时查询竞价中使用的一些信号。如需了解限制条件,请参阅限制列表
  • 对于某些广告用例,请务必与卖方合作,确保您可以在设备上考虑多个候选广告及其出价。

设计出价逻辑

买方的出价逻辑需要通过 JavaScript 实现,并在设备上执行。开发者指南包含所需签名的相关信息,以及在竞价过程中传入的各种参数的详细信息。您在设备上的出价逻辑可以访问更多其他信息,并将其作为参数传递给 generateBid() 函数。

提供出价数据

从键值对服务提取实时出价信号

作为买方,您可以在竞价期间从您拥有的键值对服务中提取实时信号。您可以在公共 Privacy Sandbox 代码库中找到此服务的初始实现,也可以自行创建服务。此服务的网址在自定义受众群体中指定为 trustedBiddingUrl,平台尝试提取数据并通过 trusted_bidding_signals parameter 将其提供给您的 generateBid 函数。您需要建立自己的键结构。

情境信号和用户信号

在设备上运行竞价时,generateBid 函数可以访问更多用户信号。这些信号将通过 contextual_signalsper_buyer_signals 字段进行传递。这些字段全是 JSON 对象,其格式需要由买方和卖方定义。

contextual_signals 字段包含可能与用户相关的信息。包含这些信号的对象由 Protected Audience 本身创建,并传递给出价逻辑。该字段目前作为空对象进行传递。如果您认为用户的相关情境信号可能与您的用例相关,请提交反馈以供我们评估。

per_buyer_signals 字段可用于您的出价逻辑。卖方将在创建竞价配置时设置这些值。买方和卖方需要协力确保这些数据位于设备端并传递给您的出价逻辑。此字段的一些示例用途包括:

  • 通过过滤提供品牌保障。卖方可以让买方知晓与请求广告的应用相关的一些分类信息,然后买方可以使用这些信息来滤除某些广告。
  • 为考虑上下文信息的机器学习模型发送嵌入

卖方:评分并选择胜出的广告

设置和原型设计

  • 在构建 AdSelectionConfig 时,卖方可以将其评分逻辑添加到通过 scoringLogicUrl 参数集提供的 scoreAd() JavaScript 函数中。您可以使用提供的规范来设置模拟服务,也可以在真实服务器上实现此端点。
  • 如需详细了解实现和 API 用法,请参阅开发者指南

设计评分逻辑

卖方在 JavaScript 中实现评分逻辑,该逻辑将在设备上执行。开发者指南包含所需签名的相关信息,以及在竞价过程中传入的各种参数的详细信息。此外,您在设备上的评分逻辑还可以访问更多其他信息,并将其作为参数传递给 scoreAd 函数。

提供评分数据

从键值对服务提取实时评分信号

作为卖方,您可以在竞价期间从您拥有的键值对服务中提取实时信号。您可以在 Privacy Privacy Sandbox 代码库中找到此服务的初始实现。此服务的网址在竞价配置中指定为 trustedScoringUri,平台尝试提取数据并通过 trusted_scoring_signals 参数将其提供给您的 scoreAd 函数。您应当建立自己的键结构。

情境信号和用户信号

在设备上运行竞价时,您的 scoreAd 函数可以访问更多用户信号。这些信号将通过 contextual_signal 字段传递给评分函数。此字段包含一个 JSON 对象,其格式由买方和卖方定义。

contextual_signal 字段包含可能与用户相关的上下文信息。包含这些信号的对象由 Protected Audience 本身创建,并传递给评分逻辑。该字段作为空对象进行传递。如果您认为用户的相关信号可能与您的用例相关,请提交反馈以供我们评估。

卖方:呈现广告

卖方需要呈现胜出的广告。如需详细了解胜出广告的呈现方式,请参阅设计方案。此功能仍在设计中。

报告展示结果

设置和原型设计

  • 买方和卖方可以分别向通过 biddingLogicUrlscoringLogicUrl 参数提供的 reportWin() JavaScript 函数添加报告逻辑。您可以使用提供的规范来设置模拟服务,也可以在真实服务器上实现此端点。
  • 如需详细了解实现和 API 用法,请参阅开发者指南

设计注意事项

买方和卖方必须在从其配置的端点返回的 JavaScript 代码中实现 reportWin 函数。利用这种方法,您可以将数据发送回服务器。

Privacy Sandbox 还提供了一个 Attribution Reporting API,可用于管理事件级报告和汇总报告。如需了解详情,请参阅集成指南