安全信号是在客户端设备上收集并与所选出价方共享的编码数据。本指南介绍了如何使用 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 项目的步骤:
- 创建一个包含以下属性的对象:
networkCode
和collectorFunction
。 - 使用您的广告资源网代码填充
networkCode
属性。 - 使用一个函数填充
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);