集成安全信号适配器

选择平台HTML5 Android iOS tvOS

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

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

使用第三方信号提供商

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

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

自动部署

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

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

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

<script src="//imasdk.googleapis.com/js/sdkloader/ima3_dai.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="dai.js"></script>

手动部署

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

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

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

<script src="//imasdk.googleapis.com/js/sdkloader/ima3_dai.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="dai.js"></script>

发送自定义数据

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

以下是 HTML5 项目的步骤:

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

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

以下是一个 JavaScript 示例:

console.log("initializing IMA");
videoElement = document.getElementById('video');
adUiElement = document.getElementById('adUi');

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
});

streamManager = new google.ima.dai.api.StreamManager(videoElement, adUiElement);