安全信號是經過編碼的資料,會在用戶端裝置上收集,並與特定出價方共用。本指南說明如何使用 IMA SDK 收集並傳送安全信號至 Google Ad Manager。
如要選取信號和出價方,並啟用安全信號共用功能,請參閱「與出價方共用安全信號」。
使用第三方信號供應器
如要使用安全信號,您必須在網站上部署信號收集器指令碼,收集信號、對信號進行編碼,然後將信號傳遞至 IMA SDK。
您可以自動或手動部署安全信號指令碼。
自動部署
在 Ad Manager 中選取信號供應商時,視所選信號供應商而定,您可能會看到「請 Google 代您部署信號收集指令碼」選項。如果您選取這個選項,且網站包含 Google 發布商代碼,系統就會自動載入您選擇的信號收集器指令碼。
以下是您在 Ad Manager UI 中可能看到的範例:
以下是網站 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 UI 中可能看到的範例:
以下是網站 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 專案的步驟:
- 請使用以下屬性建立物件:
networkCode
和collectorFunction
。 - 在
networkCode
屬性中填入網路代碼。 - 使用函式填入
collectorFunction
屬性,該函式會傳回解析為已編碼信號的承諾。
在例項化 adsLoader
之前,請將物件推送至 googletag.secureSignalProviders
陣列,以便 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);
...