setConsent

setConsent命令告知Web SDK是应发送数据(选择启用)、丢弃数据(选择禁用)还是使用defaultConsent(同意未知)。

Web SDK支持以下标准:

使用此命令时,Web SDK会将用户的首选项写入kndctr_<orgId>_consent Cookie。 无论访客的同意首选项如何,都会设置此Cookie,因为它存储该访客的同意首选项。 下次用户在浏览器中加载您的网站时,SDK将检索这些保留的首选项,以确定是否可将事件发送到Adobe。

Adobe建议您将任何同意对话框首选项与Web SDK同意分开存储。 Web SDK不提供检索同意的方法。 为确保用户首选项与SDK保持同步,您可以在每次加载页面时调用setConsent命令。 Web SDK仅在同意更改时进行服务器调用。

身份同步注意事项 identity-considerations

setConsent命令仅使用标识映射中的ECID,因为该命令在设备级别运行。 setConsent命令不考虑标识映射中的其他标识。

Web SDK提供了两个互补的同意配置命令:

  • defaultConsent:此命令在调用setConsent之前自动设置访客的默认同意首选项。
  • setConsent (当前页面):此命令显式设置访客的同意首选项。

如果同时使用这些设置,则可能会导致数据收集和Cookie设置结果有所不同,具体取决于其配置的值:

defaultConsent
setConsent
发生数据收集
Web SDK设置浏览器Cookie
in
in
in
out
in
未设置
pending
in
pending
out
pending
未设置
out
in
out
out
out
未设置

有关可设置的Cookie的完整列表,请参阅核心服务指南中的Adobe Experience Platform Web SDK Cookie

使用setConsent命令

调用Web SDK的配置实例时运行setConsent命令。 您可以在此命令中包含以下对象:

  • consent[]consent对象的数组。 同意对象的格式有所不同,具体取决于您选择的标准和版本。 有关每个同意对象的示例,请参见下面的选项卡,具体取决于同意标准。
  • identityMap:一个对象,它控制如何生成ECID以及同意信息绑定到哪些ID。 Adobe建议当setConsent在其他命令(如sendEvent)之前运行时包含此对象。
  • edgeConfigOverrides:包含数据流配置的对象将覆盖
Adobe 2.0

Adobe 2.0标准consent对象

如果您将数据发送到Adobe Experience Platform,则需要在配置文件架构中包含隐私架构字段组。 有关Adobe Experience Platform 2.0标准的更多信息,请参阅Adobe中的治理、隐私和安全性。 您可以在对应于consents配置文件字段组Consents and Preferences字段的架构的下方值对象中添加数据。

  • standard:您选择的同意标准。 为Adobe 2.0标准将此属性设置为"Adobe"

  • version:表示同意标准版本的字符串。 为Adobe 2.0标准将此属性设置为"2.0"

  • value:包含同意值的对象。

    • value.collect.val:同意值。 当用户选择加入时将此项设置为"y",当用户选择退出时将此项设置为"n"
    • value.metadata.time:用户上次更新其同意设置的时间戳。
code language-js
// Set consent using the Adobe 2.0 standard
alloy("setConsent", {
  "consent": [{
    "standard": "Adobe",
    "version": "2.0",
    "value": {
      "collect": {
        "val": "y"
      },
      "metadata": {
        "time": "YYYY-03-17T15:48:42-07:00"
      }
    }
  }]
});
IAB TCF 2.0

IAB TCF 2.0标准consent对象

要记录通过交互式Advertising Bureau Europe (IAB)透明度和同意框架(TCF)标准提供的用户同意首选项,请设置如下所示的同意字符串。

以这种方式设置同意后,Real-time Customer Profile将更新同意信息。 要使此功能正常工作,配置文件XDM架构需要包含配置文件隐私架构字段组。 发送事件时,需要手动将IAB同意信息添加到事件XDM对象。 Web SDK不会自动在事件中包含同意信息。

要在事件中发送同意信息,您必须将体验事件隐私字段组添加到已启用Profile的XDM ExperienceEvent架构中。 有关如何配置此架构的步骤,请参阅数据集准备指南中有关更新ExperienceEvent架构的部分。

  • standard:您选择的同意标准。 对于IAB TCF 2.0标准,将此属性设置为"IAB TCF"
  • version:表示同意标准版本的字符串。 对于IAB TCF 2.0标准,将此属性设置为"2.0"
  • value:包含同意值的字符串。
  • gdprApplies:一个布尔值,用于确定GDPR是否适用于此同意值。 其默认值为true
  • gdprContainsPersonalData:一个布尔值,用于确定与此用户关联的事件数据是否包含个人数据。 其默认值为false
code language-js
// Set consent using the IAB TCF 2.0 standard
alloy("setConsent", {
  consent: [{
    "standard": "IAB TCF",
    "version": "2.0",
    "value": "CO052l-O052l-DGAMBFRACBgAIBAAAAABIYgEawAQEagAAAA",
    "gdprApplies": true,
    "gdprContainsPersonalData": true
  }]
});

IAB TCF 2.0 API提供了一个事件,用于指示客户何时更新同意。 当客户最初设置其首选项以及更新其首选项时,会发生这种情况。 您可以添加事件侦听器以运行setConsent命令:

code language-js
const identityMap = { ... };
window.__tcfapi('addEventListener', 2, function (tcData, success) {
  if (success && tcData.eventStatus === 'useractioncomplete') {
    window.alloy("setConsent", {
      identityMap,
      consent: [
        {
          standard: "IAB TCF",
          version: "2.0",
          value: tcData.tcString,
          gdprApplies: tcData.gdprApplies
        }
      ]
    });
  }
});

上述代码块监听useractioncomplete事件,然后设置同意,传递同意字符串和gdprApplies标记。 如果您有客户的自定义标识,请务必填写identityMap变量。

Adobe 1.0

Adobe 1.0标准consent对象

  • standard:您选择的同意标准。 为Adobe 1.0标准将此属性设置为"Adobe"
  • version:表示同意标准版本的字符串。 为Adobe 1.0标准将此属性设置为"1.0"
  • value.general:同意值。 当用户选择加入时将此项设置为"in",当用户选择退出时将此项设置为"out"
code language-js
// Set consent using the Adobe 1.0 standard
alloy("setConsent", {
  "consent": [{
    "standard": "Adobe",
    "version": "1.0",
    "value": {
      "general": "in"
    }
  }]
});

在一个请求中发送多个标准 multiple-standards

Web SDK还支持在请求中发送多个同意对象,如下面的示例所示。

alloy("setConsent", {
    consent: [{
        standard: "Adobe",
        version: "2.0",
        value: {
            collect: {
                val: "y"
            },
            metadata: {
                time: "YYYY-03-17T15:48:42-07:00"
            }
        }
    }, {
        standard: "IAB TCF",
        version: "2.0",
        value: "CO1Z4yuO1Z4yuAcABBENArCsAP_AAH_AACiQGCNX_T5eb2vj-3Zdt_tkaYwf55y3o-wzhhaIse8NwIeH7BoGP2MwvBX4JiQCGBAkkiKBAQdtHGhcCQABgIhRiTKMYk2MjzNKJLJAilsbe0NYCD9mnsHT3ZCY70--u__7P3fAwQgkwVLwCRIWwgJJs0ohTABCOICpBwCUEIQEClhoACAnYFAR6gAAAIDAACAAAAEEEBAIABAAAkIgAAAEBAKACIBAACAEaAhAARIEAsAJEgCAAVA0JACKIIQBCDgwCjlACAoAAAAA.YAAAAAAAAAAA",
        gdprApplies: true
    }]
});

同意偏好设置的持久性 persistence

使用setConsent命令向Web SDK传达用户偏好设置后,SDK会保留对Cookie的用户偏好设置。 下次用户在浏览器中加载您的网站时,Web SDK将检索并使用这些保留的首选项来确定是否可将事件发送到Adobe。

单独存储用户的首选项,以便使用当前首选项显示同意对话框。 无法从Web SDK检索用户偏好设置。 为确保用户首选项与SDK保持同步,您可以在每次加载页面时调用setConsent命令。 Web SDK仅在首选项发生更改时进行服务器调用。

使用Web SDK标记扩展设置同意

与此命令等效的Web SDK标记扩展是 Set consent 操作。

recommendation-more-help
1ae86b30-e55e-49c1-ab11-9d0356a5f3e1