- 概觀
- 用法
- 細微與全域同意聲明
- 同意聲明設定
- 同意聲明管理
- 封鎖行為
- 整合與可用性
- 常見問題
- AMP 會在 5 月 25 日預設變更任何行為嗎?
- 我該如何停止在所有 AMP 頁面上發出廣告和分析呼叫?
- 我該如何在 AMP 頁面上收集所有使用者的同意聲明?
- 我該如何停止向歐洲經濟區 (EEA) 的使用者顯示我的所有內容?
- 我該如何僅針對歐洲經濟區 (EEA) 使用者設定同意聲明?
- 我可以將同意聲明使用者介面設為封鎖型嗎?
- 什麼是 checkConsentHref?它是強制性的嗎?
- 什麼是 consentRequired (是否需要同意聲明)?
- 我也管理非 AMP 頁面上的同意聲明,我該如何調和這兩者?
- 我該如何將額外資訊傳送給廣告聯播網/分析供應商?
- 我有一個複雜的同意聲明使用者介面,它會運作嗎?
- 我該如何為使用者顯示持久的使用者體驗元素,以更新他們的同意聲明偏好設定?
- 我可以保持非歐盟體驗不變,並僅向所有歐盟使用者提供「選擇退出」體驗嗎?
- 同意聲明可以透過 amp-geo 設定嗎?無論是直接設定還是透過 amp-bind?如果不行,可以在 checkConsentHref 的回應中設定嗎?
- 「checkConsentHref」是在每個頁面瀏覽時還是每次使用者動作期間呼叫?
- amp-geo 可以與 amp-consent 搭配運作,使其僅針對從特定國家/地區存取我內容的使用者顯示同意聲明嗎?
- AMP 支援 IAB TCF 嗎?
- 我有一個使用 AMP 實作的 CMP,但對於 TCF v2,我需要做什麼才能支援 TCF v2.2?
- 我看不到支援功能 X,我能做什麼?
- 相關資源
- 支援的同意聲明管理平台
amp-consent
說明
提供透過使用者介面控制項收集和儲存使用者同意聲明的功能。也提供根據使用者同意聲明封鎖其他 AMP 元件的功能。
必要指令碼
<script async custom-element="amp-consent" src="https://cdn.ampproject.org/v0/amp-consent-0.1.js"></script>
支援的版面配置
範例
概觀
身為發布商,您可以使用 <amp-consent>
元件來實作使用者控制項。此元件可讓您:
- 判斷是否應要求使用者與控制項互動。
- 擷取使用者的同意聲明決定。
- 讓 AMP 頁面上的元素可以使用使用者的設定來修改頁面的行為。
如果您是想要根據 amp-consent 自訂元件行為的供應商,或需要收集更進階的同意聲明資訊,您可以在此閱讀更多資訊。
用法
頁面上只允許單一個 <amp-consent>
元素,且該元素必須指定唯一的 id
。
如果您也在頁面上包含 <amp-user-notification>
元素,則與 <amp-consent>
和 <amp-user-notification>
相關聯的使用者介面將不具決定性。如果這樣會造成問題,請避免將 <amp-consent>
與 <amp-user-notification>
一起使用。
細微與全域同意聲明
<amp-consent>
支援全域同意聲明,使用者可以針對網站做出單一同意聲明選擇。它也支援細微同意聲明,允許使用者做出一組選擇。
若要實作細微同意聲明,請定義一組同意聲明目的。為每個目的選擇一個名稱。建立一個使用者介面,讓使用者可以為每個目的做出選擇,並使用 setPurpose()
動作來儲存每個選擇。
<amp-consent>
支援的其他動作適用於細微和全域同意聲明。因此,網頁可以同時實作這兩種型別。
同意聲明設定
<amp-consent>
元素需要一個 JSON 設定物件,以指定擴充功能的行為。
範例
<amp-consent layout="nodisplay" id="consent-element"> <script type="application/json"> { "consentInstanceId": "my-consent", "consentRequired": "remote", "checkConsentHref": "https://example.com/api/check-consent", "promptUI": "consent-ui", "onUpdateHref": "https://example.com/update-consent" } </script> <div id="consent-ui"> <button on="tap:consent-element.accept">Accept</button> <button on="tap:consent-element.reject">Reject</button> <button on="tap:consent-element.dismiss">Dismiss</button> </div> </amp-consent>
同意聲明實例
同意聲明實例 ID
consentInstanceId
:同意聲明設定的識別碼。
checkConsentHref
checkConsentHref
:指示 AMP 向指定的 URL 發出包含憑證的 CORS POST 請求,以遠端設定同意聲明。目的可以是 1) 判斷是否需要使用者同意聲明、2) 從伺服器取得同意聲明狀態、3) 從伺服器取得額外的 sharedData
以與 AMP 元件共用。
請求
AMP 在 POST 請求中傳送 consentInstanceId
欄位中的同意聲明實例 ID。
{ "consentInstanceId": {string}, "consentStateValue": {enum}, // the stored consent state in client cache // takes value of ["accepted", "rejected", "unknown"] "consentString": {string}, // the stored consent string in client cache "matchedGeoGroup": {string}, // (new) the user's geoGroup detected by AMP. }
回應
AMP 預期回應為如下所示的 JSON 物件:
{ "consentRequired": {boolean} // Whether consent is required from the user. // The value is required it is used to // determine if consent is required. If not // found, AMP will unblock content as consent is not required. "consentStateValue": {?enum} [default: null], // The latest consent state known // by the server // Takes value of ["accepted", "rejected", // "unknown"]. // The value will be ignored if // "consentRequired: false". // If the value is non-null, it will be cached at client. "consentString": {?string} [default: null], // The latest consent string known by the server. // If the value is non-null, // and if the consentStateValue is "accepted" or "rejected", // the value will be cached at client. "expireCache": {boolean} [default: false] // Indicate that the cache needs to be cleared // Set to `true` in conjunction with // consentStateValue='accepted'/'rejected' // to enforce server side consent state }
對於細微同意聲明,此回應也可以包含 purposeConsent
選擇的對應。
注意:舊版 promptIfUnknown
正在遷移至 consentRequired
,因為提示不再是管理同意聲明的嚴格要求。
consentStateValue
可以視為執行階段封鎖和解除封鎖元件的訊號。值 accepted
指示 AMP 使用者已同意 (或在選擇退出案例中未撤銷同意聲明)。這可以用於在某些情況下投放個人化廣告。值 rejected
表示使用者未同意 (或在選擇退出案例中已撤銷同意聲明),供應商可以決定不投放個人化廣告。
或者,可以在回應中傳回額外的鍵值組作為 sharedData
欄位。
{ "consentRequire": true, "sharedData": { "a-key": "some-string-value", "key-with-bool-value": true, "key-with-numeric-value": 123 } }
sharedData
與同意聲明狀態一樣,可供其他 AMP 擴充功能使用。由第三方供應商擴充功能和 checkConsentHref
遠端端點同意這些鍵值組的特定意義。一個範例用例是遠端端點將目前使用者的額外同意聲明相關資訊傳達給第三方供應商擴充功能。
與同意聲明狀態不同,此 shareData
不會持續儲存在用戶端儲存空間中。
consentRequired (是否需要同意聲明)
consentRequired
:它接受布林值,指示是否需要同意聲明。如果 consentRequired: false
且用戶端快取中沒有先前儲存的同意聲明決定,<amp-consent>
將解除封鎖處於 UNKNOWN_NOT_REQUIRED
狀態的元件。這主要與 geoOverride (地理位置覆寫) 設定結合使用才有意義,以便只有特定區域需要同意聲明。
它也可以設定為 consentRequired: "remote"
,以從 checkConsentHref
端點遠端擷取值。當發布商想要使用自己的伺服器來決定是否需要同意聲明時,這非常有用。例如,他們想要擁有自己的地理位置偵測,或使用已知使用者的現有同意聲明狀態。當未使用 geoOverride
(#geooverride) 時,如果未指定,consentRequired
值預設會設定為 remote
。
請注意,如果用戶端快取中儲存了先前的同意聲明狀態,則會忽略此值 (請參閱 用戶端快取 章節中的範例)。
purposeConsentRequired (目的同意聲明需求)
對於 細微同意聲明,purposeConsentRequired
可讓您指定同意聲明目的陣列。在使用者為每個目的做出選擇之前,每次他們造訪您的網頁時,都會出現 同意聲明使用者介面。
例如,如果您想要確保使用者為您呼叫的同意聲明目的 purpose-analytics
和 purpose-marketing
做出選擇,您的 JSON 將包含:
"purposeConsentRequired": ["purpose-analytics", "purpose-marketing"]
onUpdateHref
onUpdateHref
:指示 AMP 在儲存的同意聲明狀態變更時,向指定的 URL 發出包含憑證的 CORS HTTPS POST 請求。
AMP 會傳送同意聲明實例 ID、僅用於此用途產生的使用者 ID 以及同意聲明狀態以及 POST 請求。
{ "consentInstanceId": "my-consent", "ampUserId": "xxx", "consentStateValue": "accepted"/"rejected"/"unknown" }
promptUI (提示使用者介面)
promptUI (提示使用者介面)
:指定顯示以收集使用者同意聲明的提示元素。提示元素應為 <amp-consent>
的子元素,其 id
由 promptUI
參考。請參閱 提示使用者介面 章節,以瞭解使用者如何與提示使用者介面互動的詳細資訊。
透過此提示使用者介面從使用者收集的同意聲明決定將儲存在 localStorage
中作為用戶端快取。請參閱 用戶端快取 章節,以瞭解如何使用快取。
geoOverride (地理位置覆寫)
geoOverride (地理位置覆寫)
提供一種利用 <amp-geo>
元件來偵測使用者地理位置的方式,以協助用戶端決策。
geoOverride (地理位置覆寫)
是一個 JSON 物件,其鍵為 <amp-geo>
中定義的地理位置群組代碼 (詳細資訊在此)。每個地理位置覆寫都應該是有效的 <amp-consent>
設定物件。AMP 將採用對應 geoOverride (地理位置覆寫)
中的所有值來覆寫現有設定。這裡唯一的例外是 consentInstanceId
無法由 geoOverride (地理位置覆寫)
設定覆寫,因為 AMP 僅在單一實例中管理和儲存同意聲明資訊。
設定 amp-geo
時的兩個重要提示:
- 所有地理位置群組都應互斥。如果使用者屬於多個地理位置覆寫,則行為未定。
- 為無法由
<amp-geo>
識別的使用者提供geoGroupUnknown
覆寫。
以下列設定為例:
{ "onUpdateHref": "https://example.com/update-consent", "promptUI": "consent-ui", "consentRequired": false, "geoOverride": { "geoGroup1": { "consentRequired": true }, "geoGroup2": { "checkConsentHref": "https://example.com/check-consent", "consentRequired": "remote" }, "geoGroupUnknown": { "checkConsentHref": "https://example.com/check-consent", "consentRequired": true } } }
對於 geoGroup1
、geoGroup2
和 geoGroupUknown
以外的使用者,合併的設定為:
{ "onUpdateHref": "https://example.com/update-consent", "promptUI": "consent-ui", "consentRequired": false }
<amp-consent>
不執行任何動作,因為 "consentRequired": false
。
對於 geoGroup1
中的使用者,合併的設定為:
{ "onUpdateHref": "https://example.com/update-consent", "promptUI": "consent-ui", "consentRequired": true }
由於未指定 checkConsentHref
,因此同意聲明收集和儲存完全在用戶端處理。只有在用戶端快取為空時,AMP 才會提示同意聲明使用者介面。
對於 geoGroup2
中的使用者,合併的設定為:
{ "onUpdateHref": "https://example.com/update-consent", "promptUI": "consent-ui", "checkConsentHref": "https://example.com/check-consent", "consentRequired": "remote" }
如果用戶端快取為空,AMP 將等待 checkConsentHref
回應,以決定是否需要使用者同意聲明。如果回應包含 consentRequired: true
和 consentStateValue: unknown
,則 AMP 將透過指定的提示使用者介面收集同意聲明。如果 consentStateValue
為 'accepted' 或 'rejected',則它將使用此值並同步到快取。
對於 geoGroupUnknown
中的使用者,合併的設定為:
{ "onUpdateHref": "https://example.com/update-consent", "promptUI": "consent-ui", "checkConsentHref": "https://example.com/check-consent", "consentRequired": true }
AMP 將平行檢查用戶端快取和伺服器,以尋找先前的同意聲明狀態。由於 "consentRequired": true
,如果快取為空,它將透過指定的提示使用者介面收集同意聲明,而無需等待伺服器回應。伺服器回應主要用於快取重新整理或擷取 shareData
。
xssiPrefix (XSSI 前綴)
xssiPrefix (XSSI 前綴)
:導致 <amp-consent>
從 checkConsentHref
端點的回應中剝離前綴。如果回應中不存在前綴,則此選項將不起作用。xssiPrefix (XSSI 前綴)
對於包含 安全性前綴 (例如 )]}
) 的 API 非常有用,以協助防止跨網站指令碼攻擊。
uiConfig (使用者介面設定)
uiConfig (使用者介面設定)
為 <amp-consent>
提供額外的使用者介面和行為。uiConfig (使用者介面設定)
是一個選用的 JSON 物件,可以包含鍵 overlay (覆蓋)
,它是布林值。overlay (覆蓋): true
將在同意聲明提示後方新增淺黑色覆蓋,以協助使用者專注於提示。此外,這將停止使用者與同意聲明提示下方內容 (例如捲動) 的互動。overlay (覆蓋): false
是預設值。
captions (字幕)
captions (字幕)
為螢幕閱讀器使用者提供 <amp-consent>
的協助工具功能。captions (字幕)
是一個選用的 JSON 物件,可以包含 consentPromptCaption
和 buttonActionCaption
字串。這些欄位的預設值分別為 'User Consent Prompt' 和 'Focus Prompt',但可以針對您的使用案例 (例如本地化) 覆寫和自訂它們。當 iframe 中的同意聲明提示載入時,螢幕閱讀器將讀取 consentPromptCaption
,然後讀取 buttonActionCaption
。consentPromptCaption
應作為同意聲明提示的標題,而 buttonActionCaption
應告知使用者他們可以與 iframe 互動。
{ "captions": { "consentPromptCaption": "This is an example user consent prompt", "buttonActionCaption": "Click to interact with the prompt" } }
同意聲明管理
<amp-consent>
元素支援自訂同意聲明提示使用者介面和提示後使用者介面,可用於管理同意聲明。
樣式設定
在版面配置發生後,<amp-consent>
元素會設定為 position: fixed
(預設為 bottom: 0,可以覆寫)。
預設情況下,amp-consent
中包含的所有使用者介面元素都具有 display:none
,並且在顯示時將 display
設定為 display:block
。不會同時顯示兩個使用者介面元素。顯示時,使用者介面元素預設會固定在頁面底部。
提示使用者介面
提示使用者介面在同意聲明實例設定中定義。promptUI (提示使用者介面)
屬性依其 id
參考 <amp-consent>
的子元素。
範例:顯示提示使用者介面
<amp-consent layout="nodisplay" id="consent-element"> <script type="application/json"> { "consentInstanceId": "my-consent", "checkConsentHref": "https://foo.com/api/show-consent", "promptUI": "consent-ui" } </script> <div id="consent-ui"> <button on="tap:consent-element.accept">Accept</button> <button on="tap:consent-element.reject">Reject</button> <button on="tap:consent-element.dismiss">Dismiss</button> </div> </amp-consent>
AMP 會在頁面載入時或透過使用者互動顯示提示使用者介面。提示使用者介面會根據下方描述的三個使用者動作隱藏。
AMP 也透過 promptUiSrc
支援外部同意聲明使用者介面流程,這將載入您的自訂 iframe。關於使用者動作通訊的更多資訊,請參閱此處。
Stories (故事) 的提示使用者介面
amp-story
擴充功能提供預設提示使用者介面,這需要使用 <amp-story-consent>
元件作為提示使用者介面。此元件內容需要 title
、message
和 vendors
清單,並且必須在其自己的元件設定中指定。可以透過新增選用的 onlyAccept
布林參數來隱藏拒絕按鈕。此外,可以透過將 "externalLink": {"title": "Privacy Settings", "href": "https://example.com"}
新增至同意聲明設定,來設定連結至隱私權政策或設定的選用範本化外部連結。
範例:在 AMP Story (故事) 上顯示提示使用者介面
<amp-consent layout="nodisplay" id="consent-element"> <script type="application/json"> { "checkConsentHref": "https://foo.com/api/show-consent", "promptUI": "consent-ui" } </script> <amp-story-consent id="consent-ui" layout="nodisplay"> <script type="application/json"> { "title": "My title", "message": "My example message.", "vendors": ["Item 1", "Item 2", "Item 3", "Item 4"] } </script> </amp-story-consent> </amp-consent>
提示動作
三個使用者動作適用於細微和全域同意聲明:accept (接受)
、reject (拒絕)
和 dismiss (關閉)
。
若要讓使用者選擇同意聲明狀態並隱藏提示使用者介面,請將 on
屬性新增至按鈕,並使用以下值配置 on="event:idOfAmpConsentElement.accept/reject/dismiss"
-
accept (接受)
:發布商指示 AMP 記住對同意聲明的接受決定、解除封鎖等待同意聲明的元件,並隱藏提示使用者介面。 -
reject (拒絕)
:發布商指示 AMP 記住對同意聲明的拒絕決定、取消等待同意聲明的元件的buildCallback
(AMP 生命週期回呼以建置 AMP 元件),並隱藏提示使用者介面。 -
dismiss (關閉)
:指示 AMP 取消等待同意聲明的元件的buildCallback
,並隱藏提示使用者介面。
setPurpose
動作用於 細微同意聲明。您可以使用它來暫時儲存使用者針對個別同意聲明目的的選擇。此動作採用 setPurpose({purpose name}={boolean value})
形式。將目的設定為 true
表示接受;將其設定為 false
表示拒絕。
例如,若要將名為 performanceCookies
的同意聲明目的標記為 true
,您將使用:
myConsent.setPurpose(performanceCookies=true)
accept (接受)
和 reject (拒絕)
動作 (接受或拒絕全域同意聲明) 都會儲存細微同意聲明選擇。如果您將引數 (purposeConsentDefault={boolean value})
傳遞給其中一個動作,則使用者未做出選擇的任何同意聲明目的都將被指派該布林值。
例如,動作:
myConsent.accept(purposeConsentDefault=false)
將拒絕使用者未做出選擇的任何同意聲明目的。
如果您不使用 purposeConsentDefault
,則使用者未做出選擇的任何目的都將保持未設定狀態。因此,尤其是在提示使用者介面是包含核取方塊的表單時,通常建議您包含此引數。
提示後使用者介面 (選用)
您可以在收集初始同意聲明後提供使用者介面。例如,您可以為使用者提供使用者介面來管理他們的同意聲明 (例如,將他們的「拒絕」變更為「接受」)。提示後使用者介面是使用 <amp-consent>
JSON 設定物件定義的。postPromptUI (提示後使用者介面)
依 ID 參考元素。如果元素是 <amp-consent>
的子元素,它將固定在頁面底部,與提示使用者介面相同。您也可以將 postPromptUI (提示後使用者介面)
行內放在文件中,但請注意切換此元素的顯示可能會導致版面配置偏移。
定義後,當所有提示使用者介面都已隱藏時,或在頁面載入時未觸發任何提示使用者介面時,會顯示提示後使用者介面。
<amp-consent layout="nodisplay" id="consent-element"> <script type="application/json"> { "consentInstanceId": "consent-foo", "promptUI": "consent-ui", "postPromptUI": "post-consent-ui" } </script> <div id="consent-ui"> ... </div> <div id="post-consent-ui"> <button on="tap:consent-element.dismiss">Settings</button> </div> </amp-consent>
提示後動作
提示後使用者介面提供一種使用者動作型別,可用於允許使用者管理先前設定的同意聲明。使用 prompt (提示)
來顯示給定同意聲明實例的提示。將 on
屬性新增至按鈕,並使用以下值配置 on="event:idOfAmpConsentElement.prompt"
。
封鎖行為
<amp-consent>
元素可用於封鎖頁面上的任何其他 AMP 元件載入 (<amp-consent>
本身除外)。
用戶端快取
同意聲明資訊 (來自回應或來自用戶端使用者動作) 將在用戶端快取中儲存在 localStorage 中。如果存在快取值,<amp-consent>
將始終使用該值來解除封鎖內容,以進行效能最佳化。伺服器端點可以指示 <amp-consent>
清除儲存的值,使其不會用於在下次造訪時解除封鎖內容,方法是使用 expireCache: true
。
此行為的一些意涵:
- 當儲存的使用者同意聲明不再適用時,變更將透過
checkConsentHref
回應同步。但由於用戶端快取,變更將一次性套用。 - 當使用者旅行時,
<amp-consent>
將使用儲存的同意聲明。由checkConsentHref
回應使用expireCache: true
和consentRequired: false
清除儲存的值。 - 如果使用 promptUI (提示使用者介面) 收集使用者同意聲明。使用
expireCache: true
將提示同意聲明對話方塊,並阻止使用者在其後續造訪中存取內容。
<amp-consent>
將同意聲明選擇儲存在名為 amp-store:{xxx}
的金鑰中,其中 {xxx}
是您的網域。該值是 base64 編碼的 JSON。
基本封鎖行為
在全域同意聲明中,若要封鎖元件,請將 data-block-on-consent
屬性新增至 AMP 元件,或新增具有要封鎖的擴充功能清單的 amp-consent-blocking
meta 標籤。請注意,如果您將 type
屬性用於 CMP 整合,則也必須包含 amp-consent-blocking
meta 標籤。這可確保在接受同意聲明之前,或如果根據 consentRequired (是否需要同意聲明)
值不需要使用者同意聲明,則不會呼叫元件的 buildCallback
。實際上,這表示元素的所有行為 (例如,傳送 <amp-analytics>
的分析 Ping 或載入 <amp-ad>
) 都會延遲到相關同意聲明實例被接受為止。
個別元件可能會覆寫此行為,以提供更專業的處理。請參閱每個元件的文件以瞭解詳細資訊。
範例:封鎖分析,直到使用者接受同意聲明
<amp-analytics data-block-on-consent type="googleanalytics"> </amp-analytics>
或
<meta name="amp-consent-blocking" content="amp-analytics,amp-ad" />
對於細微同意聲明,請使用 data-block-on-consent-purposes
屬性以及逗號分隔的同意聲明目的清單。例如,以下程式碼將封鎖 amp-pixel
元件,直到使用者接受名為 performance
和 marketing
的目的:
<amp-pixel data-block-on-consent-purposes="performance, marketing"></amp-pixel>
進階預先定義的同意聲明封鎖行為
AMP 提供預先定義的同意聲明政策實例,供發布商輕鬆定義個別元件的同意聲明封鎖行為。
設定 data-block-on-consent
屬性的值以使用預先定義的同意聲明封鎖行為政策。
範例:封鎖分析,直到使用者回應同意聲明
<amp-analytics data-block-on-consent="_till_responded" type="googleanalytics"> </amp-analytics>
AMP 未來可能會支援更進階的預先定義封鎖行為。因此,data-block-on-consent
的值僅保留給以下支援的預先定義屬性:
_till_responded
:解除封鎖元件,直到使用者回應同意聲明提示,或已略過同意聲明提示。_till_accepted
:預設基本封鎖行為,預期當明確新增_till_accepted
時,個別元件無法覆寫封鎖行為。_auto_reject
:如果需要同意聲明但未知,則始終自動拒絕同意聲明。拒絕同意聲明決定不會儲存。建議不要為每個元件自動拒絕同意聲明時指定同意聲明提示使用者介面。
當使用預先定義的屬性之一時,AMP 會假設發布商最終控制同意聲明封鎖行為。個別元件無法覆寫預先定義同意聲明政策帶來的封鎖行為,但它們仍然可以在解除封鎖後自訂元件的行為。
自訂同意聲明封鎖行為
選用的 policy (政策)
屬性可以新增至 <amp-consent>
元素的 JSON 設定物件。其值是一個自訂同意聲明封鎖行為的物件。
<amp-consent layout="nodisplay" id="consent-element"> <script type="application/json"> { "consentInstanceId": xxx "checkConsentHref": "https://example.com/api/show-consent" "policy": { "default": { "timeout": { "seconds": 5, "fallbackAction": "reject" } } } } </script> </amp-consent>
default (預設)
政策是唯一允許設定的政策。此政策適用於每個由 data-block-on-consent
屬性封鎖的元素。
政策實例 (選用)
waitFor (等待)
waitFor (等待)
物件指定需要等待的同意聲明實例。每個同意聲明實例都需要陣列值。AMP 可能支援同意聲明實例下的子項目清單,但目前僅預期空陣列,且該值將被忽略。
timeout (逾時) (選用)
timeout (逾時)
可用於在指定時間後告知元件目前的同意聲明狀態。
當用作單一值時,timeout (逾時)
等於逾時值 (以秒為單位)。
"default": { "waitFor": { "my-consent": [] }, "timeout": 2 }
當用作物件時,timeout (逾時)
物件支援兩個屬性:
seconds (秒)
:逾時值 (以秒為單位)fallbackAction (後備動作)
(選用):如果未採取使用者動作且未儲存任何狀態,則在逾時時的後備動作。支援的後備動作為reject (拒絕)
和dismiss (關閉)
。如果未設定,則預設動作為dismiss (關閉)
。請注意,由於逾時時的後備動作而變更的同意聲明狀態不會儲存在用戶端。
"default": { "waitFor": { "my-consent": [] }, "timeout": { "seconds": 2, "fallbackAction": "reject" } }
整合與可用性
下表列出與 amp-consent 整合的供應商和元件:
整合 | 正式版可用性 | 文件 | 準備測試 |
---|---|---|---|
DoubleClick 和 AdSense 整合 | 05/10/18 | 連結 | 是 |
AMP IMA 影片整合 | 05/15/18 | 連結 | 是 |
AMP Geo | 05/10/18 | 連結 | 是 |
AMP Stories (故事) | 05/15/18 | 連結 | 是 |
常見問題
AMP 會在 5 月 25 日預設變更任何行為嗎?
否。AMP 頁面上的所有期望行為都由發布商管理,這沒有什麼不同。
我該如何停止在所有 AMP 頁面上發出廣告和分析呼叫?
在 <amp-ad>
或 <amp-analytics>
元件上使用 data-block-on-consent
屬性。
範例
<amp-ad data-block-on-consent width="320" height="50" type="doubleclick" data-slot="/4119129/mobile_ad_banner" > </amp-ad>
注意:對於某些供應商,data-block-on-consent
屬性僅與 <amp-consent>
結合使用才有效。請諮詢您的廣告或分析供應商以瞭解實作詳細資訊。
我該如何在 AMP 頁面上收集所有使用者的同意聲明?
使用 <amp-consent>
元件,該元件允許使用 Accept (接受)
、Reject (拒絕)
和 Dismiss (關閉)
狀態設定自訂使用者介面。每個 amp-component 供應商如何解譯這些狀態取決於他們自己,因此請仔細閱讀您的供應商文件。
我該如何停止向歐洲經濟區 (EEA) 的使用者顯示我的所有內容?
您可以考慮透過實作 <amp-geo>
來隱藏歐洲經濟區 (EEA) 使用者的所有內容。如需更多詳細資訊,請參閱 這篇部落格文章。
我該如何僅針對歐洲經濟區 (EEA) 使用者設定同意聲明?
使用 <amp-geo>
設定國家/地區群組,並將國家/地區群組連結到 <amp-consent>
中的 geoOverride (地理位置覆寫)
屬性。如果使用者從清單中設定的國家/地區存取 AMP 頁面,則將叫用適當的同意聲明使用者介面。
我可以將同意聲明使用者介面設為封鎖型嗎?
是。使用者介面不是規範性的。如果您最終提供非封鎖型使用者介面版本,則關閉使用者介面將導致 dismiss (關閉)
狀態。每個供應商 (廣告和分析) 如何處理 accept (接受)
、reject (拒絕)
和 dismiss (關閉)
取決於他們自己。
什麼是 checkConsentHref
?它是強制性的嗎?
請注意,如果您完全在用戶端收集同意聲明並儲存同意聲明,則 checkConsentHref
不是強制性的。
checkConsentHref
讓您 (發布商) 能夠知道是否必須向使用者顯示同意聲明。例如,透過使用此呼叫,您可以判斷使用者在伺服器端的地理位置,讓您可以抑制同意聲明。您也可以改用 <amp-geo>
和 geoOverride (地理位置覆寫)
來達成相同的結果,而無需任何伺服器端設定。
如果您偵測到使用者不需要同意聲明,因為他們在不同的屬性上或因其他原因接受了同意聲明,您也可以選擇抑制同意聲明。
什麼是 consentRequired (是否需要同意聲明)
?
consentRequired (是否需要同意聲明)
用於判斷是否需要使用者同意聲明。它可以在 <amp-consent>
的設定中針對不同的地理區域指定,也可以從 checkConsentHref
端點擷取。
我也管理非 AMP 頁面上的同意聲明,我該如何調和這兩者?
您可以設定 checkConsentHref
以呼叫您自己的伺服器端點,以偵測使用者的同意聲明狀態,並調和您希望 AMP 如何使用來自 checkConsentHref
的回應來運作。
我該如何將額外資訊傳送給廣告聯播網/分析供應商?
checkConsentHref
上的回應也接受金鑰 sharedData
的值,該值將提供給所有受同意聲明邏輯封鎖的供應商元件。供應商如何處理此 sharedData 取決於他們自己。DoubleClick/AdSense 預期特定的鍵值,請參閱他們的 文件 以瞭解詳細資訊。
我有一個複雜的同意聲明使用者介面,它會運作嗎?
您應該試用進階同意聲明流程,以瞭解其如何實作。您也可以考慮使用 <amp-selector>
元件。
我該如何為使用者顯示持久的使用者體驗元素,以更新他們的同意聲明偏好設定?
您可以使用選用的 提示後使用者介面 (選用) 來完成此操作。請檢視 AMP By Example 上的此範例,以瞭解類似的實作。
我可以保持非歐盟體驗不變,並僅向所有歐盟使用者提供「選擇退出」體驗嗎?
您可以設定 <amp-consent>
和 <amp-geo>
,以向特定國家/地區的使用者顯示同意聲明 (例如,透過您設定的歐洲經濟區 (EEA) 國家/地區清單)。如果發布商希望如此,也可以將 <amp-consent>
元件設定為代表使用者自動「拒絕」同意聲明。方法是將 timeout (逾時)
秒數設定為 0
,並將 fallbackAction (後備動作)
設定為 reject (拒絕)
。請注意,fallbackAction (後備動作)
狀態不會跨工作階段儲存。另請注意,每個廣告聯播網都有自己的實作方式來解譯使用者的「拒絕」動作。沒有辦法代表使用者自動「接受」同意聲明。
您可以瞭解更多資訊,瞭解 Google AdSense 和 DoubleClick 計劃如何處理「拒絕」,以及任何可用於投放非個人化廣告的設定。
同意聲明可以透過 amp-geo 設定嗎?無論是直接設定還是透過 amp-bind?如果不行,可以在 checkConsentHref 的回應中設定嗎?
如果沒有先前的同意聲明狀態,您可以使用 checkConsentHref
的回應向使用者顯示同意聲明,這可讓使用者完成同意聲明流程。如需預設拒絕同意聲明的詳細資訊,請參閱上方的選擇退出問題。無法預設「接受」同意聲明。
「checkConsentHref」是在每個頁面瀏覽時還是每次使用者動作期間呼叫?
在向使用者顯示同意聲明使用者介面之前,會在每次頁面瀏覽時呼叫 checkConsentHref
。
amp-geo 可以與 amp-consent 搭配運作,使其僅針對從特定國家/地區存取我內容的使用者顯示同意聲明嗎?
是。請參閱此處的範例:範例。
AMP 支援 IAB TCF 嗎?
AMP 支援熱門的透明化同意聲明架構,包括 IAB TCF v1、TCF v2、TCF v2.2、IAB US Privacy String 和 IAB Global Privacy Platform 字串。請與您的同意聲明管理平台 (CMP) 和廣告聯播網確認他們的 AMP 支援。當 CMP/廣告聯播網收到架構 (IAB TCF v1、TCF v2、TCF v2.2、IAB US Privacy String 和 IAB Global Privacy Platorm 字串) 傳遞的字串時,AMP 將讀取並傳遞這些字串。
我有一個使用 AMP 實作的 CMP,但對於 TCF v2,我需要做什麼才能支援 TCF v2.2?
對於 AMP 整合,您唯一需要做的是在用戶端 postMessage
期間提供 tcfPolicyVersion
的值,如果您也使用 checkConsentHref
,則需要在回應中提供它,並且您也可以透過回應中的 tcfPolicyVersion
欄位直接從回應更新它,如果您在交易到 TCF v2.2 之前未新增 tcfPolicyVersion 欄位,這將允許您更新同意聲明。
我看不到支援功能 X,我能做什麼?
加入我們正在討論即將推出的潛在功能的討論。如果尚不支援某些功能,請在執行緒中發言。
相關資源
支援的同意聲明管理平台
您已經閱讀這份文件很多次了,但它仍然沒有解答您的所有疑問嗎?也許其他人也有相同的感受:到 Stack Overflow 上尋求協助。
前往 Stack Overflow 發現錯誤或缺少功能嗎?AMP 專案非常鼓勵您的參與和貢獻!我們希望您能成為我們開源社群的長期參與者,同時也歡迎您針對您特別關注的問題做出一次性的貢獻。
前往 GitHub