通过 FLEDGE 中介支持多卖家竞价

提供反馈

卖方广告平台通常会使广告需求来源多样化,从而以提高广告收入为目标进行优化。借助“广告中介”,广告网络或服务可调用多个广告网络,以确定适合特定广告位的最佳广告。此方案将介绍如何扩展 Android 版 FLEDGE,以便以保护隐私的方式实现广告瀑布流中介功能。如今,广告网络为应用开发者提供各式各样的方法对来自多个广告卖方的广告竞价进行中介处理:

  1. 广告瀑布流中介:应用开发者定义一个广告网络的有序列表,其内容通常按特定广告网络的历史有效每千次展示费用 (eCPM) 进行排序。此列表称为“中介链”。应用开发者的中介平台会使用此列表按照所列顺序调用广告网络,以确定相关的广告需求来源。
  2. 程序化中介:应用开发者将多个广告网络配置为参与广告机会出价。这些广告网络可以根据对广告机会的重视程度进行实时出价。
  3. 混合中介:广告瀑布流中介技术和程序化中介技术的组合。

广告瀑布流中介

在广告瀑布流中介中,当广告机会出现时,广告 SDK 会向其后端服务器发送请求。服务器不会使用胜出的广告素材响应此请求,而是会使用包含广告网络列表(按历史 eCPM 排序)的中介链进行响应。

广告瀑布流中介模型示意图
图 1. 广告瀑布流中介模型。

在传统的广告瀑布流模型中,广告 SDK 会按照中介链指定的顺序调用每个广告网络(或它自己的竞价 SDK)。如果某个广告网络可以满足相应广告请求,该广告网络便会呈现相应广告。否则,系统会将请求发送到链中的下一个广告网络。此过程会不断重复,直到请求完成或链中的广告网络用尽为止。

广告瀑布流中介往往通过以下方式进行优化:根据来自第一方广告需求来源对 eCPM 的重新评估,定期对中介链进行重新排序。

程序化中介

程序化中介(也称为“标头出价”)可替代历史 eCPM 用于决定哪个广告网络能够获得在广告请求中投放广告的机会。使用程序化中介时,提供商会改为使用实时出价值来找出胜出的广告。

程序化中介模式示意图
图 2:程序化中介模式

混合中介

某些程序化中介解决方案会以广告瀑布流和出价的混合模式将多个广告网络结合在一起,以便更好地控制广告,同时又能获得使用实时 eCPM 带来的好处,从而最大限度提升参与的广告网络产生的收入。

在混合中介模式下,广告网络和中介服务提供商可以将广告瀑布流和实时出价的元素结合起来,为应用开发者提供更强的灵活性。借助混合模式,应用开发者可以根据历史 eCPM 配置广告网络,从而有机会在通过参与的广告网络运行实时出价之前显示广告以填充广告机会。

FLEDGE 广告瀑布流中介

FLEDGE for Android 通过设置多个 FLEDGE 竞价(为中介图中的每个节点分别设置一个 FLEDGE 竞价)来支持广告瀑布流中介。如果某个竞价中没有胜出者,系统会调用下一个广告网络竞价节点,直到链中的节点用尽为止。广告瀑布流中介流程如下所示:

  1. 中介 SDK 从内容相关广告服务器端点中提取中介链,这可能会返回内容相关广告或中介链。
  2. 如果广告服务器端点返回中介链,中介 SDK 会按顺序遍历链中的每个项,从而调用参与的广告网络的 SDK,以便运行内容相关广告和再营销广告选择。链中的每项都代表广告网络以特定价格、按特定量的展示次数、点击次数或广告时间购买广告空间的请求。
  3. 如果链中的订单项均未选择胜出的广告,中介 SDK 可能选择展示自己的广告网络中的广告,方法是运行同时考虑再营销广告和内容相关广告的 FLEDGE 广告选择。

FLEDGE 广告瀑布流中介流程示意图
图 3. 使用 FLEDGE 时的广告瀑布流中介。

上图展示了中介 SDK 可以实现,但第一方广告网络无法优化的广告瀑布流中介算法示例。FLEDGE 允许将广告选择工作流链接在一起并报告胜出的展示次数,从而支持第一方广告网络优化。

AdSelection 结果

selectAds() 的返回值类型为 AdSelectionOutcome 对象。AdSelectionOutcome 包含胜出广告的呈现 URI 和一个 AdSelectionId(一个不透明的整数,用于标识胜出订单项的广告素材)。

AdSelectionOutcome {
  Uri renderUri;
  Long AdSelectionId;
}

AdSelectionId 充当指向 AdSelectionOutcome 的指针。如今,AdSelectionId 会作为 ReportImpressionInput 参数传入 reportResult() 方法,以帮助确定作为调用 reportWin()reportResult() 方法的对象的正确广告。

链广告选择提案

我们提议扩展 selectAds() 以将先前的广告选择运行的结果考虑在内,从而通过 AdSelectionOutcome 对象选择胜出的广告。这样一来,广告网络就可以运行考虑来自多个广告网络的内容相关广告和再营销广告的中介。

ChainedAdSelections 作为可选参数添加到 AdSelectionConfig. ChainedAdSelectionsChainedAdSelections 可能会包含先前在中介链中调用 selectAds() 方法时生成的广告选择结果列表。在以下示例中,SDK 使用设备上 SDK A 和 SDK B 的结果运行 AdSelection。SDK A 和 SDK B 都将各自的 selectAds() 调用中的 AdSelectionOutcome 显式共享给运行链式广告选择的 SDK。

AdSelectionConfig myAdSelectionConfig = new AdSelectionConfig {
    Seller = "example-ssp1.com",
    DecisionLogicURL = Uri.parse("https://..."),
    CustomAudienceBuyerList = Arrays.asList("example-dsp1.com","example-dsp2.com"),
    AdSelectionSignals = "{"min_price": 10,"auction_attempts": 3}"
    SellerSignals = "{"seller_type": "news", "content_category": "sports","mature_ads_accepted" :"false"}"
    PerBuyerSignals = "{"example-dsp1.com": {"key1" : "value1"},
                        "example-dsp2.com": {"key1" : "value1", "key2" : "value2"}"
    ChainedAdSelections = {network_a_selection_outcome, network_b_selection_outcome}
};

// Invoke ad services API to initiate ad selection workflow.
AdSelectionOutcome winningAd = selectAds(myAdSelectionConfig);

广告选择链接示意图
图 4. 使用链接广告选择 selectAds()

请注意,此 selectAds() 调用的返回值是另一个 AdSelectionOutcome 对象。

  • 如果未选择广告,则返回值 null
  • 如果 ChainedAdSelections 引用的任何广告不是胜出的广告,则返回新的 AdSelectionOutcome 对象。
  • 如果它是所选广告,则返回 AdSelection 中传递的结果之一。

报告胜出的展示次数

如果链式广告选择没有胜出者,系统不会报告胜出的展示。

如果选择的是传入 AdSelectionConfig 的其中一个 AdSelectionOutcome 对象,运行链式广告选择的 SDK 应与胜出的广告 SDK 就结果进行通信。然后,胜出的广告 SDK 可以调用胜出展示报告,就像运行自己的 AdSelection 之后一样。这将确保系统会使用胜出广告的 SDK 决策逻辑 JavaScript 来报告结果。在这种情况下,运行链式广告选择的 SDK 可以报告哪个广告 SDK 获得了胜出的展示。

如果未选择任何 AdSelectionOutcome 结果,运行链式广告选择的 SDK 会调用其胜出展示报告。

运行广告瀑布流中介

正如本页前面所述,借助链接 AdSelectionOutcome 实例的能力,中介 SDK 能够运行广告瀑布流中介,同时允许第一方广告网络进行优化。此过程的总结如下:

  1. 中介 SDK 使用内容相关广告请求从中介服务器获取中介链。
  2. 中介 SDK 运行同时考虑再营销广告和内容相关广告的广告选择。
  3. 中介 SDK 运行竞价,该竞价会考虑第一方广告选择结果和中介链中第一个符合条件的项的历史 eCPM。

  4. 如果选择了某个广告,胜出的广告便会确定,此流程随即结束。

  5. 如果未选择任何广告,中介 SDK 会从中介链中选择第一个符合条件的项并调用对应的 SDK,以便运行内容相关广告和再营销广告选择。

  6. 如果选择了某个广告,该广告便会呈现,此流程随即结束。

  7. 如果未选择广告,系统会考虑链中的下一个项,并执行第 3 步。

  8. 如果链中没有更多项,中介 SDK 会运行同时考虑再营销广告和内容相关广告的 FLEDGE 广告选择,以便显示第一方广告(与第 2 步类似)。

FLEDGE 广告瀑布流中介流程
图 5. FLEDGE 广告瀑布流中介流程。

最佳实践

在进行第一方优化之前运行内容相关广告竞价

再营销需求可产生较高的出价,从而在中介链中产生胜出的结果。截断这一流程通常用于通过优化再营销受众群体名单来启用第一方优化。

FLEDGE 再营销需求仅适用于客户端的 FLEDGE 竞价。这可能会使在服务器端进行第一方优化变得非常困难。如需缓解第一方优化方面的问题,请先运行内容相关广告竞价,然后根据胜出的广告结果执行第一方优化(如本页前面所述)。

尽量减小设备端中介链

为实现最佳效果,设备端中介链应保持较小的规模。设备端执行的计算成本可能与作为中介链的一部分评估的竞价数量成线性关系。换句话说,更多节点会导致更多的计算周期要求和更长的延迟时间。当您向设备端中介评估传递节点时,请考虑延迟对收入的影响。

其他注意事项

此 FLEDGE 中介方案正处于设计阶段,欢迎提供反馈

FLEDGE 目前没有为多个广告位的中介提供全面的解决方案。每个广告位都必须单独进行处理。

FLEDGE Mediation API 目前支持广告瀑布流中介和有限制的程序化中介。我们以后会与您分享有关支持其他程序化中介用例的详细信息。

由于 FLEDGE 广告选择是在提取内容相关广告之后运行的,因此调用 FLEDGE 可能会影响广告请求的端到端延迟时间。