使用共用儲存空間,決定使用者在各網站上看到的廣告素材。
Shared Storage API 是一種 Privacy Sandbox 提案,可用於一般用途和跨網站儲存空間,支援多種可能的用途。其中一個例子是廣告素材輪播,您可以在 Chrome 104.0.5086.0 以上版本中進行測試。
透過廣告素材輪播功能,您可以儲存廣告素材 ID、觀看次數和使用者互動等資料,藉此決定使用者在不同網站上看到的廣告素材。
執行 Shared Storage 工作區,根據儲存的資料從提供的清單中選取網址,然後在受限框架中算繪該廣告素材。可用於選取新廣告或其他內容。
試用廣告素材輪播
如要嘗試使用共用儲存空間的廣告輪替功能,請確認您使用的是 Chrome 104.0.5086.0 以上版本。啟用 chrome://settings/adPrivacy
下方的所有廣告隱私權 API。
您也可以在指令列中使用 --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
旗標啟用共用儲存空間。
嘗試使用程式碼範例
廣告客戶或內容製作者可能會想在廣告活動中套用不同的策略,並輪播內容或廣告素材,以提升成效。共用儲存空間可用於在不同網站上執行不同的輪替策略,例如依序輪替和平均輪替。
在這個例子中:
creative-rotation.js
已嵌入框架中。這個指令碼會設定最重要的廣告 ( 權重),並呼叫 worklet 來決定應顯示哪些內容。creative-rotation-worklet.js
是共用儲存空間小程式,可決定內容的加權分配方式,以及應顯示的傳回值。
// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
{
url: 'https://your-server.example/contents/content-1.html',
weight: 0.7,
},
{
url: 'https://your-server.example/contents/content-2.html',
weight: 0.2,
},
{
url: 'https://your-server.example/contents/content-3.html',
weight: 0.1,
},
];
// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
await window.sharedStorage.set('content-rotation-mode', 'sequential', {
ignoreIfPresent: true,
});
await window.sharedStorage.set('content-rotation-index', 0, {
ignoreIfPresent: true,
});
}
async function injectAd() {
// Load the worklet module
await window.sharedStorage.worklet.addModule('creative-rotation-worklet.js');
// Initially set the storage to sequential mode for the demo
seedStorage();
// Run the URL selection operation to determine the next content rendered.
const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, {
data: DEMO_CONTENT_CONFIG,
resolveToConfig: true
});
// Render the opaque URL into a fenced frame
document.getElementById('content-slot').config = fencedFrameConfig;
}
injectAd();
class SelectURLOperation {
async run(urls, data) {
// Read the rotation mode from Shared Storage
const rotationMode = await sharedStorage.get('content-rotation-mode');
// Generate a random number to be used for rotation
const randomNumber = Math.random();
let index;
switch (rotationMode) {
/**
* Sequential rotation
* - Rotates the contents in order
* - Example: A -> B -> C -> A ...
*/
case 'sequential':
const currentIndex = await sharedStorage.get('creative-rotation-index');
index = parseInt(currentIndex, 10);
const nextIndex = (index + 1) % urls.length;
await sharedStorage.set('content-rotation-index', nextIndex);
break;
/**
* Weighted rotation
* - Rotates the contentswith weighted probability
* - Example: A=70% / B=20% / C=10%
*/
case 'weighted-distribution':
// Sum the weights cumulatively, and find the first URL where the
// sum exceeds the random number. The array is sorted in
// descending order first.
let weightSum = 0;
const { url } = data
.sort((a, b) => b.weight - a.weight)
.find(({ weight }) => {
weightSum += weight;
return weightSum > randomNumber;
});
index = urls.indexOf(url);
break;
default:
index = 0;
}
return index;
}
}
register('content-rotation', SelectURLOperation);
用途
以上只是共用儲存空間的部分用途。我們會在收到意見回饋並發現新的用途後,持續新增範例。
內容篩選
根據在共用儲存空間中收集到的資訊,在圍欄框架中選取並顯示不同網站上的不同內容。這些用途的輸出閘道是網址選取。
- 廣告素材輪播:儲存廣告素材 ID、觀看次數和使用者互動等資料,以決定使用者在不同網站上看到的廣告素材。
- A/B 版本測試:您可以將使用者指派給實驗群組,然後將該群組儲存在共用儲存空間中,以便跨網站存取。
- 自訂使用者體驗:根據使用者的註冊狀態或其他使用者狀態,分享自訂內容和行動號召
產生摘要報表
使用 Shared Storage 收集資訊,並產生雜訊匯總摘要報表。這些用途的輸出閘道為 Private Aggregation API。
- 不重複觸及評估:許多內容製作者和廣告客戶都想知道有多少不重複使用者觀看了他們的內容。使用共用儲存空間記錄使用者首次看到廣告、嵌入的影片或刊登內容,並避免在不同網站上重複計算同一使用者的次數。接著,您可以使用 Private Aggregation API 輸出觸及數的摘要報表。
- 客層評估:內容製作者通常會想瞭解觀眾的客層。您可以使用 Shared Storage,在第一方網站等有使用者客層資料的環境中記錄使用者客層資料,並使用匯總報表,針對許多其他網站 (例如嵌入內容) 回報這項資料。
- K+ 頻率評估:有時稱為「有效展示頻率」,使用者必須看到一定次數的廣告,才會認出或回想特定內容 (通常是在廣告觀看的情況下)。您可以使用 Shared Storage,針對至少看過 K 次內容的不重複使用者建立報表。
互動並分享意見回饋
請注意,Shared Storage API 提案仍在積極討論和開發中,因此可能會有變動。
我們很期待聽到您對 Shared Storage API 的想法。
掌握最新消息
- 電子報:訂閱我們的電子報,即可取得與 Shared Storage API 相關的最新消息和公告。
需要協助嗎?
- 開發人員支援:在 Privacy Sandbox 開發人員支援存放區中與其他開發人員互動,並取得問題解答。