- 總覽
- 用法
- 精細且全面的同意聲明
- 同意聲明設定
- 同意聲明管理
- 封鎖行為
- 整合與適用性
- 常見問題
- AMP 會在 5 月 25 日變更任何預設行為嗎?
- 如何停止在我所有的 AMP 網頁上發出廣告和分析呼叫?
- 如何從 AMP 網頁上的所有使用者收集同意聲明?
- 如何停止向歐洲經濟區 (EEA) 的使用者顯示我的所有內容?
- 如何僅針對歐洲經濟區 (EEA) 的使用者設定同意聲明?
- 我可以讓同意聲明 UI 成為封鎖式嗎?
- 什麼是 checkConsentHref?它是強制性的嗎?
- 什麼是 consentRequired?
- 我也管理非 AMP 網頁上的同意聲明,我該如何協調兩者?
- 如何將額外資訊傳送給廣告聯播網/分析供應商?
- 我的同意聲明 UI 很複雜,它會運作嗎?
- 如何為使用者顯示永久 UX 元素以更新他們的同意聲明偏好設定?
- 我可以保持非歐盟體驗不變,而只向所有歐盟使用者提供「退出」體驗嗎?
- 同意聲明可以透過 amp-geo 設定嗎?直接設定或透過 amp-bind 設定?如果不行,可以在 checkConsentHref 的回應中設定嗎?
- 「checkConsentHref」是在每個網頁瀏覽或在每個使用者動作期間呼叫嗎?
- amp-geo 可以與 amp-consent 搭配運作,以便僅針對從特定國家/地區存取我內容的使用者顯示同意聲明嗎?
- AMP 支援 IAB TCF 嗎?
- 我有一個使用 AMP 實作的 CMP,但對於 TCF v2,我需要做什麼來支援 TCF v2.2?
- 我看不到支援功能 X,我能做什麼?
- 相關資源
- 支援的同意聲明管理平台
重要事項:此文件不適用於您目前選取的格式 廣告!
amp-consent
說明
提供透過 UI 控制項收集和儲存使用者同意聲明的功能。也提供根據使用者同意聲明封鎖其他 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>
相關聯的 UI 將不具決定性。如果這會造成問題,請避免將 <amp-consent>
與 <amp-user-notification>
搭配使用。
精細且全面的同意聲明
<amp-consent>
支援全面同意聲明,使用者可以針對網站做出單一同意聲明選擇。它也支援精細同意聲明,允許使用者做出一組選擇。
若要實作精細同意聲明,請定義一組同意聲明目的。為每個目的選擇一個名稱。建立一個 UI,讓使用者可以針對每個目的做出選擇,並使用 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
可讓您指定同意聲明目的陣列。在使用者針對每個目的做出選擇之前,每次他們造訪您的網頁時,都會出現同意聲明 UI。
例如,如果您想要確保使用者針對您已呼叫的同意聲明目的 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>
的子元素,並具有 promptUI
參照的 id
。如需使用者如何與提示 UI 互動的詳細資訊,請參閱提示 UI章節。
從使用者透過此提示 UI 收集的同意聲明決定將儲存在 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 才會提示同意聲明 UI。
對於 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 將透過指定的提示 UI 收集同意聲明。如果 consentStateValue
為「accepted」或「rejected」,則它將使用此值並同步到快取。
對於 geoGroupUnknown
中的使用者,合併的設定為
{ "onUpdateHref": "https://example.com/update-consent", "promptUI": "consent-ui", "checkConsentHref": "https://example.com/check-consent", "consentRequired": true }
AMP 將並行檢查用戶端快取和伺服器,以尋找先前的同意聲明狀態。由於 "consentRequired": true
,如果快取為空,它將透過指定的提示 UI 收集同意聲明,而無需等待伺服器回應。伺服器回應主要用於快取重新整理或擷取 shareData
。
xssiPrefix
xssiPrefix
:導致 <amp-consent>
從 checkConsentHref
端點的回應中剝離前綴。如果回應中不存在前綴,則此選項將不起作用。xssiPrefix
對於包含安全性前綴 (例如 )]}
) 以協助防止跨網站指令碼攻擊的 API 非常有用。
uiConfig
uiConfig
為 <amp-consent>
提供額外的 UI 和行為。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>
元素支援自訂同意聲明提示 UI 和提示後 UI,可用於管理同意聲明。
樣式設定
版面配置發生後,<amp-consent>
元素會設定為 position: fixed
(預設值為 bottom: 0,可以覆寫)。
依預設,amp-consent
中包含的所有 UI 元素都具有 display:none
,並且在顯示時將 display
設定為 display:block
。不會同時顯示兩個 UI 元素。顯示時,UI 元素預設會固定在網頁底部。
提示 UI
提示 UI 在同意聲明執行個體設定中定義。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 會在網頁載入時或透過使用者互動顯示提示 UI。提示 UI 會根據以下三個使用者動作隱藏。
AMP 也透過 promptUiSrc
支援外部同意聲明 UI 流程,這將載入您的自訂 iframe。如需使用者動作通訊的詳細資訊,請按一下此處。
Web Stories (網路故事) 的提示 UI
amp-story
擴充功能提供預設提示 UI,需要使用 <amp-story-consent>
元件作為提示 UI。此元件內容需要 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
。
若要讓使用者選擇同意聲明狀態並隱藏提示 UI,請將 on
屬性新增至按鈕,並使用以下值配置 on="event:idOfAmpConsentElement.accept/reject/dismiss"
-
accept
:發布商指示 AMP 記住同意聲明接受決定、解除封鎖等待同意聲明的元件,並隱藏提示 UI。 -
reject
:發布商指示 AMP 記住同意聲明拒絕決定、取消等待同意聲明的元件的buildCallback
(AMP 生命週期回呼,用於建構 AMP 元件),並隱藏提示 UI。 -
dismiss
:指示 AMP 取消等待同意聲明的元件的buildCallback
,並隱藏提示 UI。
setPurpose
動作用於精細同意聲明。您可以使用它來暫時儲存使用者針對個別同意聲明目的所做的選擇。此動作的形式為 setPurpose({purpose name}={boolean value})
。將目的設定為 true
表示接受;將其設定為 false
表示拒絕。
例如,若要將名為 performanceCookies
的同意聲明目的標記為 true
,您可以使用
myConsent.setPurpose(performanceCookies=true)
accept
和 reject
動作 (接受或拒絕全面同意聲明) 也會儲存精細同意聲明選擇。如果您傳遞其中一個引數 (purposeConsentDefault={boolean value})
,則使用者未做出選擇的任何同意聲明目的都將被指派該布林值。
例如,動作
myConsent.accept(purposeConsentDefault=false)
將拒絕使用者未做出選擇的任何同意聲明目的。
如果您未使用 purposeConsentDefault
,則使用者未做出選擇的任何目的都將保持未設定狀態。因此,特別是當提示 UI 是具有核取方塊的表單時,通常建議您包含此引數。
提示後 UI (選用)
您可以在收集初始同意聲明後提供 UI。例如,您可以為使用者提供 UI 來管理他們的同意聲明 (例如,將他們的「拒絕」變更為「接受」)。提示後 UI 是使用 <amp-consent>
JSON 設定物件定義的。postPromptUI
依 ID 參照元素。如果元素是 <amp-consent>
的子元素,它將固定在網頁底部,與提示 UI 相同。您也可以在文件中內嵌 postPromptUI
,但請注意切換此元素的顯示可能會導致版面配置偏移。
定義後,當所有提示 UI 都已隱藏時,或如果未觸發任何提示 UI,則最初在網頁載入時顯示提示後 UI。
<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>
提示後動作
提示後 UI 提供一種使用者動作類型,可用於允許使用者管理先前設定的同意聲明。使用 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
:如果需要同意聲明但未知,則始終自動拒絕同意聲明。拒絕同意聲明決定不會儲存。建議不要在自動拒絕每個元件的同意聲明時指定同意聲明提示 UI。
當使用其中一個預先定義的屬性時,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
狀態的自訂 UI。每個 amp-component 供應商如何解讀這些狀態取決於他們自己,因此請仔細閱讀您的供應商文件。
如何停止向歐洲經濟區 (EEA) 的使用者顯示我的所有內容?
您可以考慮透過實作 <amp-geo>
來隱藏歐洲經濟區 (EEA) 使用者的所有內容。如需更多詳細資訊,請參閱這篇網誌文章。
如何僅針對歐洲經濟區 (EEA) 的使用者設定同意聲明?
使用 <amp-geo>
設定國家/地區群組,並將國家/地區群組連結至 <amp-consent>
中的 geoOverride
屬性。如果使用者從清單中設定的國家/地區存取 AMP 網頁,則會叫用適當的同意聲明 UI。
我可以讓同意聲明 UI 成為封鎖式嗎?
是。UI 不是規範性的。如果您最終提供非封鎖版本的 UI,則關閉 UI 將導致 dismiss
狀態。每個供應商 (廣告和分析) 將如何處理 accept
、reject
和 dismiss
取決於他們自己。
什麼是 checkConsentHref
?它是強制性的嗎?
請注意,如果您完全在用戶端收集和儲存同意聲明,則 checkConsentHref
不是強制性的。
checkConsentHref
讓您 (發布商) 能夠知道是否必須向使用者顯示同意聲明。例如,透過使用此呼叫,您可以在伺服器端判斷使用者的地理位置,讓您能夠抑制同意聲明。您也可以改為使用 <amp-geo>
和 geoOverride
來達成相同的結果,而無需任何伺服器端設定。
如果您偵測到使用者不需要同意聲明,因為他們在不同的資源上或因其他原因接受了同意聲明,您也可以選擇抑制同意聲明。
什麼是 consentRequired
?
consentRequired
用於判斷使用者是否需要同意聲明。它可以在不同地理區域的 <amp-consent>
設定中指定,也可以從 checkConsentHref
端點擷取。
我也管理非 AMP 網頁上的同意聲明,我該如何協調兩者?
您可以設定 checkConsentHref
以呼叫您自己的伺服器端點,以偵測使用者的同意聲明狀態,並協調您希望 AMP 如何使用來自 checkConsentHref
的回應來運作。
如何將額外資訊傳送給廣告聯播網/分析供應商?
checkConsentHref
上的回應也接受金鑰 sharedData
的值,該值將提供給所有受同意聲明邏輯封鎖的供應商元件。供應商如何處理此 sharedData 取決於他們自己。DoubleClick/AdSense 預期特定的鍵值,如需詳細資訊,請參閱他們的文件。
我的同意聲明 UI 很複雜,它會運作嗎?
您應該試用進階同意聲明流程,以瞭解其如何實作。您也可以考慮使用 <amp-selector>
元件。
如何為使用者顯示永久 UX 元素以更新他們的同意聲明偏好設定?
您可以使用選用的 提示後 UI 來完成此操作。請檢視 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」是在每個網頁瀏覽或在每個使用者動作期間呼叫嗎?
在向使用者顯示同意聲明 UI 之前,會在每個網頁瀏覽時呼叫 checkConsentHref
。
amp-geo 可以與 amp-consent 搭配運作,以便僅針對從特定國家/地區存取我內容的使用者顯示同意聲明嗎?
是。請參閱此處的範例。
AMP 支援 IAB TCF 嗎?
AMP 支援熱門的透明化同意聲明架構,包括 IAB TCF v1、TCF v2、TCF v2.2、IAB 美國隱私權字串和 IAB 全球隱私權平台字串。請向您的同意聲明管理平台 (CMP) 和廣告聯播網查詢他們的 AMP 支援。當 CMP/廣告聯播網收到架構 (IAB TCF v1、TCF v2、TCF v2.2、IAB 美國隱私權字串和 IAB 全球隱私權平台字串) 傳遞的字串時,AMP 將讀取並傳遞這些字串。
我有一個使用 AMP 實作的 CMP,但對於 TCF v2,我需要做什麼來支援 TCF v2.2?
對於 AMP 整合,您唯一需要做的是在用戶端 postMessage
期間提供 tcfPolicyVersion
的值,如果您也使用 checkConsentHref
,則需要在回應中提供它,您也可以透過回應中的 tcfPolicyVersion
欄位直接從回應更新它,如果您在交易之前沒有新增 tcfPolicyVersion 欄位到 TCF v2.2,這將允許您更新同意聲明。
我看不到支援功能 X,我能做什麼?
加入我們正在討論即將推出的潛在功能的討論。如果某些功能尚不受支援,請在主題串中發言。
相關資源
支援的同意聲明管理平台
您已經讀過這份文件很多次,但它仍然沒有解答您的所有疑問嗎? 也許其他人也有相同的感受:在 Stack Overflow 上聯繫他們。
前往 Stack Overflow 發現錯誤或缺少功能嗎?AMP 專案非常鼓勵您的參與和貢獻! 我們希望您能成為我們開源社群的長期參與者,同時我們也歡迎針對您特別關注的問題提供一次性的貢獻。
前往 GitHub