AMP

重要事項:此文件不適用於您目前選取的格式 電子郵件

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>

consentInstanceId:同意聲明設定的 ID。

checkConsentHref

checkConsentHref:指示 AMP 向指定的 URL 發出附帶憑證的 CORS POST 要求,以遠端設定同意聲明。用途可以是:1) 判斷是否需要使用者提供同意聲明,2) 從伺服器取得同意聲明狀態,3) 從伺服器取得額外的 sharedData 以與 AMP 元件共用。

Request

AMP 在 consentInstanceId 欄位中隨 POST 要求傳送 consent instance 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.
}
Response

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,因為 prompt 不再是管理同意聲明的嚴格必要條件。

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 可讓您指定同意聲明用途的陣列。在使用者針對每個用途做出選擇之前,consent UI 會在使用者每次造訪您的網頁時出現。

例如,如果您想要確保使用者針對您稱為 purpose-analyticspurpose-marketing 的同意聲明用途做出選擇,您的 JSON 會包含

"purposeConsentRequired": ["purpose-analytics", "purpose-marketing"]

onUpdateHref

onUpdateHref:指示 AMP 在每次儲存的同意聲明狀態變更時,向指定的 URL 發出附帶憑證的 CORS HTTPS POST 要求。

AMP 會隨 POST 要求傳送 consent instance ID、僅供此用途產生的使用者 ID 以及同意聲明狀態。

{
  "consentInstanceId": "my-consent",
  "ampUserId": "xxx",
  "consentStateValue": "accepted"/"rejected"/"unknown"
}

promptUI

promptUI:指定顯示以收集使用者同意聲明的提示元素。提示元素應該是 <amp-consent> 的子元素,其 idpromptUI 參照。如需使用者如何與 prompt UI 互動的詳細資訊,請參閱Prompt UI 章節。

透過此 prompt 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
    }
  }
}

對於 geoGroup1geoGroup2geoGroupUknown 以外的使用者,合併的設定為

{
  "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 才會提示 consent UI。

對於 geoGroup2 中的使用者,合併的設定為

{
  "onUpdateHref": "https://example.com/update-consent",
  "promptUI": "consent-ui",
  "checkConsentHref": "https://example.com/check-consent",
  "consentRequired": "remote"
}

如果用戶端快取為空,AMP 將等待 checkConsentHref 回應,以決定是否需要使用者提供同意聲明。如果回應包含 consentRequired: trueconsentStateValue: unknown,則 AMP 將透過指定的 prompt 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,如果快取為空,它將透過指定的 prompt UI 收集同意聲明,而無需等待伺服器回應。伺服器回應主要用於快取重新整理或擷取 shareData

xssiPrefix

xssiPrefix:導致 <amp-consent>checkConsentHref 端點的回應中移除前置字串。如果回應中不存在前置字串,則此選項將不起作用。xssiPrefix 對於包含 安全性前置字串 (例如 )]}) 以協助防止跨網站指令碼攻擊的 API 非常有用。

uiConfig

uiConfig<amp-consent> 提供額外的 UI 和行為。uiConfig 是一個選填 JSON 物件,可以包含鍵 overlay,它是一個布林值。overlay: true 將在 consent prompt 後方新增淺黑色覆蓋層,以協助使用者專注於提示。此外,這將停止使用者與 consent prompt 下方內容 (例如捲動) 的互動。overlay: false 是預設值。

captions

captions 為螢幕閱讀器使用者提供 <amp-consent> 的無障礙功能。captions 是一個選填 JSON 物件,可以包含 consentPromptCaptionbuttonActionCaption 字串。這些欄位的預設值分別為「User Consent Prompt」和「Focus Prompt」,但可以覆寫和自訂以符合您的使用案例 (例如本地化)。當 iframe 中的 consent prompt 載入時,螢幕閱讀器將讀取 consentPromptCaption,然後讀取 buttonActionCaptionconsentPromptCaption 應作為 consent prompt 的標題,而 buttonActionCaption 應告知使用者他們可以與 iframe 互動。

{
  "captions": {
    "consentPromptCaption": "This is an example user consent prompt",
    "buttonActionCaption": "Click to interact with the prompt"
  }
}

<amp-consent> 元素支援自訂 consent prompt UI 和 post-prompt UI,可用於管理同意聲明。

樣式

<amp-consent> 元素在版面配置發生後設定為 position: fixed (預設值為 bottom: 0,可以覆寫)。

依預設,amp-consent 內包含的所有 UI 元素都具有 display:none,並且在顯示時將 display 設定為 display:block。一次不會顯示兩個 UI 元素。顯示時,UI 元素預設會固定在頁面底部。

Prompt UI

prompt UI 在 consent instance 設定中定義。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 會在頁面載入時或透過使用者互動顯示 prompt UI。prompt UI 會根據以下三個使用者動作隱藏。

AMP 也透過 promptUiSrc 支援外部 consent UI 流程,這將載入您的自訂 iframe。如需使用者動作通訊的詳細資訊,請參閱此處

適用於 Stories 的 Prompt UI

amp-story 擴充功能提供預設 prompt UI,這需要使用 <amp-story-consent> 元件作為 prompt UI。此元件內容需要 titlemessagevendors 清單,並且必須在其自己的元件設定中指定。可以透過新增選填的 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>

Prompt Actions

三個使用者動作適用於細項和全域同意聲明:acceptrejectdismiss

若要讓使用者能夠選擇同意聲明狀態並隱藏 prompt UI,請將 on 屬性新增至按鈕,並使用以下值配置 on="event:idOfAmpConsentElement.accept/reject/dismiss"

  • accept:發布商指示 AMP 記住對同意聲明的接受決定、解除封鎖等待同意聲明的元件,並隱藏 prompt UI。

  • reject:發布商指示 AMP 記住對同意聲明的拒絕決定、取消等待同意聲明的元件的 buildCallback (AMP 生命週期回呼,用於建構 AMP 元件),並隱藏 prompt UI。

  • dismiss:指示 AMP 取消等待同意聲明的元件的 buildCallback,並隱藏 prompt UI。

setPurpose 動作用於細項同意聲明。您可以使用它來暫時儲存使用者針對個別同意聲明用途的選擇。此動作採用 setPurpose({purpose name}={boolean value}) 的形式。將用途設定為 true 表示接受;將其設定為 false 表示拒絕。

例如,若要將稱為 performanceCookies 的同意聲明用途標記為 true,您將使用

myConsent.setPurpose(performanceCookies=true)

接受或拒絕全域同意聲明的 acceptreject 動作也會儲存細項同意聲明選擇。如果您將引數 (purposeConsentDefault={boolean value}) 傳遞給其中任一動作,則任何使用者未做出選擇的同意聲明用途都將被指派該布林值。

例如,動作

myConsent.accept(purposeConsentDefault=false)

將拒絕使用者未做出選擇的任何同意聲明用途。

如果您不使用 purposeConsentDefault,則任何使用者未做出選擇的用途都將保持未設定狀態。因此,尤其是當 prompt UI 是包含核取方塊的表單時,通常建議您包含此引數。

Post-prompt UI (選填)

您可以在收集初始同意聲明後提供 UI。例如,您可以提供 UI 讓使用者管理其同意聲明 (例如,將其「拒絕」變更為「接受」)。post-prompt UI 是使用 <amp-consent> JSON 設定物件定義的。postPromptUI 依 ID 參照元素。如果元素是 <amp-consent> 的子元素,它將固定在頁面底部,與 prompt UI 相同。您也可以將 postPromptUI 行內放在文件中,但請注意切換此元素的顯示可能會導致版面配置偏移。

定義後,post-prompt UI 會在所有 prompt UI 都已隱藏時顯示,或在頁面載入時最初顯示 (如果未觸發任何 prompt 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>

Post-prompt action

post-prompt UI 提供一種使用者動作類型,可用於允許使用者管理先前設定的同意聲明。使用 prompt 顯示給定 consent instance 的提示。將 on 屬性新增至按鈕,並使用以下值配置 on="event:idOfAmpConsentElement.prompt"

封鎖行為

<amp-consent> 元素可用於封鎖頁面上任何其他 AMP 元件載入 (<amp-consent> 本身除外)。

用戶端快取

同意聲明資訊 (來自回應或來自用戶端的使用者動作) 將在用戶端快取於 localStorage 中。如果存在快取值,<amp-consent> 將始終使用它來解除封鎖內容,以最佳化效能。伺服器端點可以指示 <amp-consent> 刪除儲存的值,使其不會在下次造訪時用於解除封鎖內容,方法是使用 expireCache: true

此行為的一些含義:

  • 當儲存的使用者同意聲明不再適用時,變更將透過 checkConsentHref 回應同步。但由於用戶端快取,變更將會一次性套用。
  • 當使用者旅行時,<amp-consent> 將使用儲存的同意聲明。由 checkConsentHref 回應使用 expireCache: trueconsentRequired: 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 標籤。這可確保元件的 buildCallback 不會在同意聲明被接受之前呼叫,或者如果根據 consentRequired 值不需要使用者提供同意聲明。實際上,這表示元素的所有行為 (例如,針對 <amp-analytics> 傳送分析 Ping 或載入 <amp-ad>) 都會延遲到相關的 consent instance 被接受為止。

個別元件可能會覆寫此行為以提供更專業的處理。如需詳細資訊,請參閱每個元件的文件。

範例:封鎖分析,直到使用者接受同意聲明

<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 元件,直到使用者接受名為 performancemarketing 的用途

<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 屬性封鎖的元素。

Policy Instance (選填)

waitFor

waitFor 物件指定需要等待的 consent instance。每個 consent instance 都需要陣列值。AMP 可能支援 consent instance 下的子項目清單,但目前僅預期為空陣列,並且該值將被忽略。

timeout (選填)

timeout 可用於在指定時間後告知元件目前的同意聲明狀態。

當用作單一值時,timeout 等於逾時值 (以秒為單位)。

"default": { "waitFor": { "my-consent": [] }, "timeout": 2 }

當用作物件時。timeout 物件支援兩個屬性:

  • seconds:逾時值 (以秒為單位)
  • fallbackAction (選填):如果在逾時時未採取使用者動作且未儲存任何狀態,則逾時時的回退動作。支援的回退動作為 rejectdismiss。如果未設定,則預設動作為 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-consent> 元件,該元件允許設定具有「接受」、「拒絕」和「關閉」狀態的自訂 UI。每個 amp-component 供應商如何解讀這些狀態由他們自行決定,因此請仔細閱讀供應商的文件。

我該如何停止向歐洲經濟區 (EEA) 的使用者顯示我的所有內容?

您可以考慮透過實作 <amp-geo> 來隱藏歐洲經濟區 (EEA) 使用者的所有內容。如需更多詳細資訊,請參閱這篇部落格文章

使用 <amp-geo> 設定國家/地區群組,並將國家/地區群組連結至 <amp-consent> 中的 geoOverride 屬性。如果使用者從列表中設定的國家/地區存取 AMP 網頁,則將叫用適當的 consent UI。

是。UI 不是規範性的。如果您最終提供非封鎖版本的 UI,則關閉 UI 將導致 dismiss 狀態。每個供應商 (廣告和分析) 將如何處理 acceptrejectdismiss 由他們自行決定。

什麼是 checkConsentHref?它是否為必要項目?

請注意,如果您完全在用戶端收集同意聲明並儲存同意聲明,則 checkConsentHref 不是必要項目。

checkConsentHref 讓您 (發布商) 能夠知道是否必須向使用者顯示同意聲明。例如,透過使用此呼叫,您可以在伺服器端判斷使用者的地理位置,讓您可以抑制同意聲明。您也可以改用 <amp-geo>geoOverride 來達到相同的結果,而無需任何伺服器端設定。

如果您偵測到使用者不需要同意聲明,因為他們在不同的資源上或基於其他原因接受了同意聲明,您也可以選擇抑制同意聲明。

什麼是 consentRequired

consentRequired 用於判斷是否需要使用者提供同意聲明。它可以在 <amp-consent> 的設定中針對不同的地理區域指定,也可以從 checkConsentHref 端點擷取。

您可以設定 checkConsentHref 以呼叫您自己的伺服器端點,以偵測使用者的同意聲明狀態,並協調您希望 AMP 如何使用來自 checkConsentHref 的回應來運作。

我該如何將額外資訊傳送給廣告聯播網/分析供應商?

checkConsentHref 的回應中,也接受金鑰 sharedData 的值,此金鑰會在同意聲明邏輯封鎖所有供應商元件時提供使用。供應商如何處理此 sharedData 由他們自行決定。DoubleClick/AdSense 預期特定的金鑰值,詳細資訊請參閱他們的文件

您應該試用進階同意聲明流程,以了解其實作方式。您也可以考慮使用 <amp-selector> 元件。

您可以使用選用的 提示後 UI 來完成此操作。請參閱 AMP By Example 上的範例,以了解類似的實作方式。

我可以維持非歐盟體驗不變,並只向所有歐盟使用者提供「退出」體驗嗎?

您可以設定 <amp-consent><amp-geo>,以便向特定國家/地區 (例如,透過您設定的 EEA 國家/地區清單) 的使用者顯示同意聲明。如果發布商希望如此,<amp-consent> 元件也可以設定為自動「拒絕」代表使用者的同意聲明。方法是將 timeout 秒數設定為 0,並將 fallbackAction 設定為 reject。請注意,fallbackAction 狀態不會跨工作階段儲存。另請注意,每個廣告聯播網都會有自己的實作方式,以解釋使用者發出的「拒絕」動作。沒有辦法自動「接受」代表使用者的同意聲明。

您可以進一步瞭解 Google AdSense 和 DoubleClick 計畫如何處理「拒絕」,以及任何可用的設定來投放非個人化廣告。

如果沒有先前的同意聲明狀態,您可以使用 checkConsentHref 的回應向使用者顯示同意聲明,讓使用者可以完成同意聲明流程。如需預設拒絕同意聲明的詳細資訊,請參閱上方的選擇退出問題。無法預設「接受」同意聲明。

「checkConsentHref」是在每個網頁瀏覽或在每個使用者動作期間呼叫嗎?

每次頁面瀏覽時,在向使用者顯示同意聲明 UI 之前,都會呼叫 checkConsentHref

可以。請參閱此處的範例:這裡

AMP 是否支援 IAB TCF?

AMP 支援熱門的透明度同意聲明架構,包括 IAB TCF v1、TCF v2、TCF v2.2、IAB US Privacy String 和 IAB Global Privacy Platform string。請與您的同意聲明管理平台 (CMP) 和廣告聯播網確認他們對 AMP 的支援。當 CMP/廣告聯播網收到架構 (IAB TCF v1、TCF v2、TCF v2.2、IAB US Privacy String 和 IAB Global Privacy Platform string) 傳遞的字串時,AMP 會讀取並傳遞這些字串。

我有一個以 AMP 實作的 CMP,但對於 TCF v2,我需要做什麼來支援 TCF v2.2?

對於 AMP 整合,您唯一需要做的是在用戶端 postMessage 期間提供 tcfPolicyVersion 的值,如果您也使用 checkConsentHref,則需要在回應中提供它,您也可以透過伺服器回應中的 tcfPolicyVersion 欄位直接從回應中更新它,如果您在交易到 TCF v2.2 之前沒有新增 tcfPolicyVersion 欄位,這將允許您更新同意聲明。

我看不到功能 X 受到支援,我該怎麼辦?

加入我們的討論,我們正在討論即將推出的潛在功能。如果尚不支援某些功能,請在討論串中提出。

需要更多協助嗎?

您已經閱讀這份文件十幾次,但它仍然沒有真正涵蓋您的所有問題嗎?也許其他人也有相同的感受:請在 Stack Overflow 上與他們聯繫。

前往 Stack Overflow
發現錯誤或缺少功能?

AMP 專案大力鼓勵您的參與和貢獻!我們希望您能成為我們開放原始碼社群的長期參與者,但我們也歡迎您針對您特別感興趣的問題做出一次性的貢獻。

前往 GitHub