支持客户同意首选项

为了尊重用户的隐私,您可能需要先请求用户同意,然后才允许SDK将特定于用户的数据用于某些目的。 目前,SDK仅允许用户选择加入或退出所有目的,但将来,我们希望能够对特定目的提供更加精细的控制。

如果用户出于所有目的选择加入,则允许SDK执行以下任务:

  • 将数据发送到Adobe服务器和从服务器发送数据。
  • 读取和写入Cookie或Web存储项。

如果用户选择出于所有目的,SDK将不执行任何这些任务。

配置同意

默认情况下,用户将选择加入所有目的。 要阻止SDK在用户选择加入之前执行上述任务,请在SDK配置期间传递"defaultConsent": "pending",如下所示:

alloy("configure", {
  "edgeConfigId": "ebebf826-a01f-4458-8cec-ef61de241c93",
  "imsOrgId": "ADB3LETTERSANDNUMBERS@AdobeOrg",
  "defaultConsent": "pending"
});

当一般用途的默认同意设置为待处理时,尝试执行任何依赖于用户选择加入首选项的命令(例如sendEvent命令)会导致该命令在SDK中排入队列。 在将用户的选择加入首选项告知SDK后,才会处理这些命令。

注意

命令仅在内存中排队。 页面加载时不会保存它们。

如果您不想收集在用户选择加入首选项设置之前发生的事件,则可以在SDK配置期间传递"defaultConsent": "out"。 尝试执行任何依赖于用户选择加入首选项的命令在您将用户的选择加入首选项告知SDK之前不会起作用。

注意

目前,SDK仅支持一个全部或全部不支持的目的。 尽管我们计划构建一组更可靠的目的或类别,这些目的或类别将与不同的Adobe功能和产品选项相对应,但当前的实施是选择加入的一种完全或完全不采用的方法。 这仅适用于Adobe Experience Platform Web SDK和其他AdobeJavaScript库。

此时,您可能希望用户在用户界面中的某个位置选择加入。 收集用户首选项后,将这些首选项告知SDK。

通过Adobe Experience Platform标准传达同意首选项

SDK支持版本1.0和2.0的Adobe Experience Platform同意标准。 目前,1.0和2.0标准仅支持自动执行全部或全部不执行同意首选项。 1.0标准正在逐步取消,以支持2.0标准。 2.0标准允许您添加其他同意首选项,以用于手动强制执行同意首选项。

使用Adobe标准版本2.0

如果您使用的是Adobe Experience Platform,则需要在用户档案架构中包含隐私架构字段组。 有关Adobe标准版本2.0的更多信息,请参阅Adobe Experience Platform中的管理、隐私和安全。您可以在以下值对象中添加数据,该对象对应于同意和首选项配置文件字段组的consents字段的架构。

如果用户选择加入,请执行setConsent命令,并将收集首选项设置为y,如下所示:

alloy("setConsent", {
    consent: [{
      standard: "Adobe",
      version: "2.0",
      value: {
        collect: {
          val: "y"
        },
        metadata: {
          time: "2021-03-17T15:48:42-07:00"
        }
      }
    }]
});

时间字段应指定用户上次更新其同意首选项的时间。 如果用户选择退出,请执行setConsent命令,并将收集首选项设置为n,如下所示:

alloy("setConsent", {
    consent: [{
      standard: "Adobe",
      version: "2.0",
      value: {
        collect: {
          val: "n"
        },
        metadata: {
          time: "2021-03-17T15:51:30-07:00"
        }
      }
    }]
});
注意

用户选择退出后,SDK将不允许您将用户收集同意设置为y

使用Adobe标准版本1.0

如果用户选择加入,则执行setConsent命令,并将general选项设置为in,如下所示:

alloy("setConsent", {
    consent: [{
      standard: "Adobe",
      version: "1.0",
      value: {
        general: "in"
      }
    }]
});

如果用户选择退出,请执行setConsent命令,并将general选项设置为out,如下所示:

alloy("setConsent", {
    consent: [{
      standard: "Adobe",
      version: "1.0",
      value: {
        general: "out"
      }
    }]
});
注意

用户选择退出后,SDK将不允许您将用户同意设置为in

通过IAB TCF标准传达同意首选项

SDK支持记录通过欧洲互动广告局(IAB)透明度和同意框架(TCF)标准提供的用户同意首选项。 同意字符串可以通过与上面相同的setConsent命令进行设置,如下所示:

alloy("setConsent", {
    consent: [{
      standard: "IAB TCF",
      version: "2.0",
      value: "CO1Z4yuO1Z4yuAcABBENArCsAP_AAH_AACiQGCNX_T5eb2vj-3Zdt_tkaYwf55y3o-wzhhaIse8NwIeH7BoGP2MwvBX4JiQCGBAkkiKBAQdtHGhcCQABgIhRiTKMYk2MjzNKJLJAilsbe0NYCD9mnsHT3ZCY70--u__7P3fAwQgkwVLwCRIWwgJJs0ohTABCOICpBwCUEIQEClhoACAnYFAR6gAAAIDAACAAAAEEEBAIABAAAkIgAAAEBAKACIBAACAEaAhAARIEAsAJEgCAAVA0JACKIIQBCDgwCjlACAoAAAAA.YAAAAAAAAAAA",
      gdprApplies: true
    }]
});

以这种方式设置同意后,实时客户资料会更新以包含同意信息。 要使其正常工作,配置文件XDM架构需要包含配置文件隐私架构字段组。 发送事件时,需要将IAB同意信息手动添加到事件XDM对象。 SDK不会自动在事件中包含同意信息。 要在事件中发送同意信息,需要将体验事件隐私字段组添加到体验事件架构中。

在一个请求中发送多个标准

SDK还支持在请求中发送多个同意对象。

alloy("setConsent", {
    consent: [{
      standard: "Adobe",
      version: "2.0",
      value: {
        collect: {
          val: "y"
        },
        metadata: {
          time: "2021-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
    }]
});

同意首选项的持续性

在您使用setConsent命令将用户首选项告知SDK后,SDK会将用户首选项保留为Cookie。 下次用户在浏览器中加载您的网站时,SDK将检索并使用这些保留的首选项来确定事件是否可以发送到Adobe。

您需要独立存储用户首选项,才能显示包含当前首选项的同意对话框。 无法从SDK检索用户首选项。 要确保用户首选项与SDK保持同步,您可以在每次加载页面时调用setConsent命令。 只有在首选项发生更改时,SDK才会进行服务器调用。

在设置同意时同步身份

当默认同意挂起或结束时,setConsent可能是发出并建立身份的第一个请求。 因此,在第一个请求上同步身份可能很重要。 身份映射可以像在sendEvent命令中一样添加到setConsent命令中。 请参阅检索Experience CloudID

在此页面上