集成安全信号适配器

安全信号是在客户端设备上收集并与所选出价方共享的编码数据。本指南介绍了如何使用 IMA SDK 收集安全信号并将其发送到 Google Ad Manager。

如需选择信号和出价方并启用安全信号共享,请参阅与出价方共享安全信号

使用第三方信号提供商

如需使用安全信号,您必须在网站上部署信号收集器脚本,以收集信号、对其进行编码,并将其传递给 IMA SDK。

您可以自动或手动部署安全信号脚本。

自动部署

在 Ad Manager 中选择信号提供商时,根据您选择的信号提供商,您可能会看到让 Google 代表您部署信号收集脚本的选项。如果您选择此选项,并且您的网站包含 Google 发布商代码,系统会自动加载您选择的信号收集器脚本。

以下示例展示了您在 Ad Manager 界面中可能会看到的内容:

以下是您可能会在网站的 index.html 文件中看到的内容示例:

<script src="//imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
<!-- Load gpt.js, which autoloads all signal provider scripts configured to be
  deployed by Google. -->
<script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
<script src="ads.js"></script>

手动部署

如果您在 Ad Manager 中没有看到让 Google 代表您部署信号收集脚本这一选项,或者您未开启此选项,则需要从安全信号提供商处获取脚本链接,并手动将其添加到您的项目中。

以下示例展示了您在 Ad Manager 界面中可能会看到的内容:

以下是您可能会在网站的 index.html 文件中看到的内容示例:

<script src="//imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
<!-- Load signal provider scripts manually, using the unique instructions given by each
  signal provider. -->
<script src="//cdn.provider1.com/files/a/e/5/4/7/signalCollector.js"></script>
<script src="//provider2.co.uk/ads/signalcollector/script.min.js"></script>
<script src="/local/path/to/third_party_signal_provider_3.js"></script>
<script src="ads.js"></script>

发送自定义数据

除了使用第三方信号提供商之外,您还可以收集、编码和发送包含自定义数据的信号。您必须先在 Ad Manager 中启用自定义信号,然后才能发送包含自定义数据的安全信号。

以下是 HTML5 项目的步骤:

  1. 创建一个包含以下属性的对象:networkCodecollectorFunction
  2. 使用您的广告资源网代码填充 networkCode 属性。
  3. 使用一个函数填充 collectorFunction 属性,该函数会返回一个解析为编码信号的 promise。

在实例化 adsLoader 之前,将对象推送到 googletag.secureSignalProviders 数组,以便 IMA SDK 可以访问该对象来检索和传输编码后的信号:

以下是一个 JavaScript 示例:

console.log("initializing IMA");
adContainer = document.getElementById('ad-container');
adDisplayContainer = new google.ima.AdDisplayContainer(adContainer, videoElement);

const NETWORK_CODE = '21775744923';

/**
 * Sample signal collector function.
 * @return {!Promise<string>} A promise that resolves to the encoded signals.
 */
const signalCollector = () => {
 return new Promise((resolve, reject) => {
   resolve("My encoded signal string");
 });
};
if (!googletag) googletag = {};
if (!googletag.secureSignalProviders) googletag.secureSignalProviders = [];
googletag.secureSignalProviders.push({
 networkCode: NETWORK_CODE,
 collectorFunction: signalCollector
});

adsLoader = new google.ima.AdsLoader(adDisplayContainer);