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:同意聲明設定的識別碼。

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-analyticspurpose-marketing 的同意聲明目的做出選擇,您的 JSON 將包含

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

onUpdateHref

onUpdateHref:指示 AMP 每當儲存的同意聲明狀態變更時,向指定的 URL 發出包含憑證的 CORS HTTPS POST 請求。

AMP 會連同 POST 請求傳送同意聲明執行個體 ID、僅供此用途產生的使用者 ID 和同意聲明狀態。

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

promptUI

promptUI:指定顯示以收集使用者同意聲明的提示元素。提示元素應該是 <amp-consent> 的子元素,其 idpromptUI 參照。請參閱 提示 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
    }
  }
}

對於 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 才會提示同意聲明 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 將透過指定的提示 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 物件,可以包含 consentPromptCaptionbuttonActionCaption 字串。這些欄位的預設值分別為 'User Consent Prompt' 和 'Focus Prompt',但可以覆寫和自訂以符合您的使用案例 (例如在地化)。當在 iframe 中載入同意聲明提示時,螢幕閱讀器將讀取 consentPromptCaption,然後讀取 buttonActionCaptionconsentPromptCaption 應作為同意聲明提示的標題,而 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。有關使用者動作通訊的更多資訊,請參閱此處

Stories 的提示 UI

amp-story 擴充功能提供預設提示 UI,需要使用 <amp-story-consent> 元件作為提示 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>

提示動作

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

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

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

  • reject:發布商指示 AMP 記住同意聲明拒絕決定、取消等待同意聲明的元件的 buildCallback (AMP 生命周期回呼,請參閱 建立 AMP 擴充功能),並隱藏提示 UI。

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

setPurpose 動作用於 細微同意聲明。您可以使用它來暫時儲存使用者針對個別同意聲明目的所做的選擇。此動作的形式為 setPurpose({目的名稱}={布林值})。將目的設定為 true 會將其標記為接受;將其設定為 false 會將其標記為拒絕。

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

myConsent.setPurpose(performanceCookies=true)

acceptreject 動作 (接受或拒絕全域同意聲明) 也會儲存細微同意聲明選擇。如果您傳遞這兩個動作的引數 (purposeConsentDefault={布林值}),則使用者尚未做出選擇的任何同意聲明目的都將被指派該布林值。

例如,動作

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> 將使用儲存的同意聲明。是否使用 expireCache: trueconsentRequired: false 清除儲存的值取決於 checkConsentHref 回應。
  • 如果使用 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 元件,直到使用者接受名為 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 屬性封鎖的元素。

政策執行個體 (選用)

waitFor

waitFor 物件指定需要等待的同意聲明執行個體。每個同意聲明執行個體都需要陣列值。AMP 可能支援同意聲明執行個體下的子項目列表,但目前僅預期為空陣列,且該值將被忽略。

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> 元件,它允許設定具有 AcceptRejectDismiss 狀態的自訂 UI。每個 amp-component 供應商如何解讀這些狀態取決於他們自己,因此請仔細閱讀您的供應商文件。

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

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

使用 <amp-geo> 設定國家/地區群組,並將國家/地區群組連結到 <amp-consent> 中的 geoOverride 屬性。如果使用者從清單中設定的國家/地區存取 AMP 網頁,將會叫用適當的同意聲明 UI。

是的。使用者介面並非硬性規定的。如果您最終提供了非阻擋式版本的使用者介面,關閉使用者介面將會導致 dismiss 狀態。每個供應商(廣告與分析)如何處理 acceptrejectdismiss,取決於他們各自的決定。

什麼是 checkConsentHref?它是強制性的嗎?

請注意,如果您完全在用戶端收集和儲存同意聲明,則 checkConsentHref 並非強制性的。

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

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

什麼是 consentRequired

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

您可以設定 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 計劃如何處理「拒絕」,以及任何可用於投放非個人化廣告的設定。

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

"checkConsentHref" 是在每次網頁瀏覽或每次使用者動作時呼叫嗎?

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 Platorm 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