安全信号

安全信号是在客户端设备上收集并与特定出价方共享的经过编码的数据。本指南介绍了如何使用 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。

请先将对象推送到 googletag.secureSignalProviders 数组,然后再实例化 adsLoader,以便 IMA SDK 可以访问该对象以检索和传输编码信号。

下面是一个 JavaScript 示例:

ads.js

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

const NETWORK_CODE = '12345678901';
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);
...