Execute JavaScript code and determining the consent signal

UniConsent CMP v2 API

  • openunic

    展示 UniConsent CMP 给用户。

    __unicapi('openunic')
    
  • agreeAll

    用户同意了所有同意选项。您可以在用户点击程序化第一层 UI 上的 "同意全部" 按钮时实现您的程序化 CMP 的第一层,并触发 agreeAll 事件。

    __unicapi('agreeAll')
    
  • openOptions

    打开第二层 UI。如果您希望自定义第一层并以程序化方式打开同意管理器,可以使用此选项。

    __unicapi('openOptions')
    
  • openVendorList

    打开供应商列表 UI。如果您希望自定义第一层并以程序化方式打开同意管理器,可以使用此选项。

    __unicapi('openVendorList')
    
  • getUConsent

    获取您自定义供应商的同意信号。

__unicapi(
  'getUConsent',
  2,
  (uConsent, success) => {
    if (success) {
      // do something with tcData
    } else {
      // do something else
    }
  },
  [1, 2, 3]
) // vendors Ids
  • getUCData

    获取您自定义供应商的同意信号数据。

__unicapi(
  'getUCData',
  2,
  (ucData, success) => {
    if (success) {
      // do something with tcData
    } else {
      // do something else
    }
  },
  [1, 2, 3]
) // vendors Ids
  • IAB TCF V2 同意管理平台 API

    • getTCData
__tcfapi(
  'getTCData',
  2,
  (tcData, success) => {
    if (success) {
      // do something with tcData
    } else {
      // do something else
    }
  },
  [1, 2, 3]
) // vendors Ids
  • ping

    __tcfapi('ping', 2, (pingReturn) => {
      // 处理 pingReturn 的操作
    })
    
  • addEventListener

const callback = (tcData, success) => {
  if (success && tcData.eventStatus === 'tcloaded') {
    // do something with tcData.tcString

    // remove the ourself to not get called more than once
    __tcfapi(
      'removeEventListener',
      2,
      (success) => {
        if (success) {
          // oh good...
        }
      },
      tcData.listenerId
    )
  } else {
    // do something else
  }
}

__tcfapi('addEventListener', 2, callback)
  • getVendorList
__tcfapi(
  'getVendorList',
  2,
  (gvl, success) => {
    if (success) {
      // do something with gvl
    } else {
      // do something else
    }
  },
  'LATEST'
)

您可以在这里找到所有 API:IAB TCF 文档

  • 美国隐私用户信号机制 "USP API"(CCPA 合规机制)

    示例:

__uspapi('getUSPData', 1, (uspData, success) => {
  if (success) {
    // do something with uspData
  } else {
    // do something else
  }
})

响应 uspData:

  {
 "version": 1, /* number indicating the U.S. Privacy spec version */
 "uspString": "1YN" /* string; not applicable: "1--" */ /* number; 1 applies, 0 doesn't apply, -1 not set */
}
  • 推迟广告加载直到给出或已经给出 TCF 同意

    确保在启动之前从用户那里获取同意。

    示例:

__tcfapi('addEventListener', 2, function (tcData, success) {
  if (success && tcData.unicLoad === true) {
    if (!window._initAds) {
      window._initAds = true
      // your code to kick off the ads
      console.log('_initAds started.')
    }
  }
})
  • 使用纯 JavaScript 监听并等待同意数据 unic_data
;(function waitCMP() {
  var readyCMP
  if (!readyCMP && window['dataLayer']) {
    window['dataLayer'].forEach(function (event) {
      if (event['event'] === 'unic_data') {
        readyCMP = 1
        console.log(event)
        // your other codes;
      }
    })
  }
  if (!readyCMP) {
    setTimeout(waitCMP, 100)
  }
})()