此頁面說明伺服器SDK setConsent方法。 若為Web SDK,請參閱setConsent.
setConsent方法會告訴伺服器SDK它是否可以為訪客(選擇加入)傳送資料,或者必須捨棄它(選擇退出)。 SDK會將訪客的偏好設定傳送至Edge Network,然後透過您傳遞至forRequest的Cookie服務將結果儲存至kndctr_<orgId>_consent Cookie。
SDK支援下列同意標準:
- Adobe standard: 1.0和2.0版。
- IAB透明與同意架構(TCF): 2.0版。
只有當執行個體包含createInstance預設包含的Consent元件時,才能使用此方法。
呼叫訪客的setConsent call
同意屬於單一訪客,因此請一律在該訪客的forRequest控制代碼上呼叫setConsent,不要在頂層執行個體上呼叫。 以下範例使用Adobe 2.0標準:
const visitor = alloy.forRequest({ request: req, cookie: visitorCookies });
await visitor.setConsent({
consent: [{
standard: "Adobe",
version: "2.0",
value: {
collect: { val: "y" }
}
}]
});
以下範例使用Adobe 1.0標準:
await visitor.setConsent({
consent: [{
standard: "Adobe",
version: "1.0",
value: { general: "in" }
}]
});
下列範例使用IAB TCF 2.0標準:
await visitor.setConsent({
consent: [{
standard: "IAB TCF",
version: "2.0",
value: "CO052l-O052l-DGAMBFRACBgAIBAAAAAAIYgEawAQEagAAAA",
gdprApplies: true
}]
});
如果您使用IAB TCF標準且想要知道訪客設定檔上的同意資料,請也將IAB同意資訊包含在事件xdm物件中。 SDK不會自動將其新增至事件。
如何記住同意 stored-consent
SDK會透過您傳遞至forRequest的cookie服務讀取及寫入同意Cookie:
- 如果您的Cookie服務讀取訪客的瀏覽器Cookie,則訪客先前在伺服器上或使用Web SDK的瀏覽器中所記錄的同意已經適用。 在訪客的偏好設定變更之前,您不需要再呼叫
setConsent。 - 如果您未傳遞Cookie服務,SDK就記不得兩次要求之間的同意。 每個請求都從
defaultConsent開始。
如果已經傳送訪客的相同偏好設定,SDK會略過請求。 它會追蹤透過storage服務傳送的偏好設定,因此只有在您將該訪客的storage服務傳遞至forRequest時,此檢查才會適用於所有請求。 否則,即使訪客的偏好設定沒有變更,每個呼叫都會傳送要求給Edge Network。 當訪客進行或變更同意選擇(而不是在每個要求上)時,請呼叫setConsent。
要求未經過驗證。 請確定您的資料流接受未驗證的請求。 請參閱設定資料流存取型別。
選項 options
setConsent方法接受具有下列屬性的物件:
consent:必要。 同意物件的陣列,每個物件都採用其中一個支援的標準。identityMap:訪客的身分對應。 Edge Network在裝置層級套用同意,因此只使用來自此地圖的ECID。edgeConfigOverrides:此要求的資料流設定覆寫物件。
結果物件 result
當Edge Network接受同意偏好設定時,setConsent方法會傳回以空白物件解析的Promise。