Leading Consent Management Platform

Compliant with GDPR, CCPA, COPPA, LGPD, PECR, PDPA, PIPEDA, and more.

如何将 UniConsent CMP SDK 集成到 React Native 中

如何将 UniConsent CMP SDK 集成到 React Native 中

本指南介绍如何将 UniConsent CMP SDK 集成到您的 React Native 应用程序中,用于处理 GDPR IAB TCF 2.4 同意管理。

您可以在 SDK 软件包附带的 demo 目录中找到集成了此 SDK 的演示应用。

前提条件

  • 包含移动应用支持的 UniConsent CMP 计划。
  • React Native 版 UniConsent SDK 软件包(例如 uniconsent-react-native-sdk-26.10.0.zip),可从 UniConsent 控制面板下载或联系支持团队获取。
  • 可用的 React Native 开发环境。

快速开始(安装)

安装 SDK 软件包

下载并解压 SDK 软件包(例如 uniconsent-react-native-sdk-26.10.0.zip)。其中包含:

  • uniconsent-react-native-sdk-26.10.0.tgz — 可通过 npm 安装的 SDK 软件包
  • uniconsent-sdk/ — 预构建的 SDK 库文件
  • demo/ — 演示应用
  • README.md — 文档

使用 npm 或 Yarn 安装 .tgz 文件:

# Replace <path-to-package-file.tgz> with the actual path to the file
npm install <path-to-package-file.tgz>
# or
yarn add <path-to-package-file.tgz>

示例:如果您将 .tgz 文件放在项目根目录:

npm install ./uniconsent-react-native-sdk-26.10.0.tgz
# or
yarn add file:./uniconsent-react-native-sdk-26.10.0.tgz

安装对等依赖

此 SDK 需要以下对等依赖:

npm install react-native-webview react-native-default-preference react-native-device-info
# or
yarn add react-native-webview react-native-default-preference react-native-device-info

安装 iOS Pods

如果为 iOS 开发,请导航到项目的 ios 目录并安装 pods:

cd ios
pod install
cd ..

自定义同意界面

在集成 SDK 之前,请在 UniConsent 控制面板 中自定义同意横幅的外观,使其与您的品牌一致并优化同意率。

步骤 1:在控制面板中设置品牌样式

前往 Projects → 选择您的项目 → Settings → Step 5: UI & Style Settings 进行配置:

  • Main Button Colour — 设置主操作按钮颜色以匹配您的品牌
  • Main Button Text Colour — 调整主按钮上的文字颜色以确保可读性
  • Background Colour — 设置横幅背景颜色以融入您的应用
  • Text Colour — 确保正文文字具有适当的对比度

步骤 2:使用自定义 CSS 进行高级样式设置(可选)

如需更精确的控制,请在 Step 5 的 CSS Content 字段中添加自定义 CSS。建议通过此方式使横幅在您的应用中看起来更加原生,以获得最佳同意率:

/* Example: Style the accept button to match your brand */
.unic-btn-accept {
  background-color: #4CAF50;
  border-radius: 8px;
  font-weight: 600;
}

/* Example: Adjust banner font */
.unic-banner {
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

/* Example: Make the reject button less prominent */
.unic-btn-reject {
  background-color: transparent;
  border: 1px solid #ccc;
  color: #666;
}

提示: 精心设计品牌风格的同意界面通常能获得更高的同意率。用户更愿意与符合他们期望的外观和风格的横幅积极互动。

使用方法

通过 Provider 初始化 SDK

使用 UniConsentProvider 包裹您应用的根组件(或相关部分)。您必须提供 licenseId(UniConsent 的 Publisher ID/pid)。

// Your main App file (e.g., App.tsx or index.js)
import React from 'react';
import { UniConsentProvider } from 'uniconsent-sdk';
import YourAppRootComponent from './src/YourAppRootComponent';

const App = () => {
  return (
    <UniConsentProvider licenseId="YOUR_LICENSE_ID">
      <YourAppRootComponent />
    </UniConsentProvider>
  );
};

export default App;

显示模式

SDK 支持三种 CMP 界面显示模式,通过 UniConsentProvider 上的 displayMode 属性配置:

模式说明
'fullScreen'全屏页面**(默认)**
'bottomSheet'锚定在屏幕底部的模态面板
'dialog'居中模态对话框
// Full screen (default — no prop needed)
<UniConsentProvider licenseId="YOUR_LICENSE_ID">

// Bottom sheet
<UniConsentProvider licenseId="YOUR_LICENSE_ID" displayMode="bottomSheet">

// Bottom sheet at 70% of the screen height
<UniConsentProvider licenseId="YOUR_LICENSE_ID" displayMode="bottomSheet" heightRatio={0.7}>

// Center dialog
<UniConsentProvider licenseId="YOUR_LICENSE_ID" displayMode="dialog">

// Center dialog at 80% width and 60% height
<UniConsentProvider licenseId="YOUR_LICENSE_ID" displayMode="dialog" widthRatio={0.8} heightRatio={0.6}>

自定义尺寸(可选)

自 SDK 26.8.0 版本起可用。

两个比例属性均为可选,所有显示模式不传它们也能正常工作。仅在需要覆盖默认尺寸时才传入比例(相对屏幕的比例,需大于 0 且不超过 1);无效值会抛出 RangeError:

属性适用于省略时的默认值
heightRatio'bottomSheet'、'dialog'面板:屏幕的 90%。对话框:70%
widthRatio仅 'dialog'屏幕宽度的 90%,最大 500

不适用于所选显示模式的比例会被忽略('fullScreen' 会忽略两者)。

事件处理

使用 UniConsentProvider 上的 onEvent 属性监听 SDK 生命周期事件。

可用事件类型:

  • 'sdkInit' — SDK 初始化开始
  • 'ready' — SDK 初始化完成
  • 'uiDisplay' — 同意界面已显示
  • 'uiClose' — 同意界面已关闭
<UniConsentProvider
  licenseId="YOUR_LICENSE_ID"
  onEvent={(event) => {
    switch (event.type) {
      case 'ready':
        console.log('SDK ready');
        break;
      case 'uiClose':
        console.log('Consent UI closed');
        break;
    }
  }}
>
  <YourAppRootComponent />
</UniConsentProvider>

显示 CMP 界面

在 Provider 内部的组件中使用 useConsent hook 获取 openCMP 函数,然后在需要时调用(例如按钮点击时)。

import React from 'react';
import { View, Text, Button, ActivityIndicator } from 'react-native';
import { useConsent } from 'uniconsent-sdk';

const ConsentInfoComponent = () => {
  const { consentStatus, isLoading, openCMP } = useConsent();

  return (
    <View>
      <Text>Consent Status:</Text>
      {isLoading ? (
        <ActivityIndicator />
      ) : (
        <Text>{consentStatus ?? 'Initializing...'}</Text>
      )}
      <Button
        title="Manage Privacy Settings"
        onPress={() => openCMP()}
        disabled={isLoading}
      />
    </View>
  );
};

以编程方式检查同意状态

使用实用函数直接检查同意状态,无需使用 hook:

import {
  getTCString,
  isEURegion,
  isPurposeConsented,
  isVendorConsented,
  getConsentData,
} from 'uniconsent-sdk';

// Get the full TC String
const tcString = await getTCString();

// Check if user is in EU/EEA region
const inEU = await isEURegion();

// Check if a specific TCF purpose has consent (1-based ID)
const hasPurpose1 = await isPurposeConsented(1);

// Check if a specific vendor has consent (1-based ID)
const hasVendor755 = await isVendorConsented(755);

// Get all consent data as a single object
const consentData = await getConsentData();

自定义首层界面(全部同意 / 全部拒绝)

自 SDK 26.7.0 版本起可用。如果您构建自己的首层同意界面而不显示 CMP webview,可以直接保存同意状态:

import { agreeAll, rejectAll } from 'uniconsent-sdk';

// Grant consent for all purposes, special features and vendors
const saved = await agreeAll();

// Reject all purposes, special features and vendors
const rejected = await rejectAll();

这两个 API 保存与 CMP UI 流程相同的同意值(IAB TCF 键、附加同意和同意模式信号),并更新 Provider 的 consentStatus、向 onEvent 发送 uiClose 事件。它们使用 UniConsentProvider 注册的 licenseId,请在 Provider 挂载后调用。

对于美国和加拿大用户,这两个 API 还会按照与 CMP 界面相同的规则,保存适用于该用户的 CCPA、US State Privacy 和 IAB TCF 加拿大选择,并写入 IAB GPP 和 US Privacy 键。请在 UniConsent 控制台的项目设置中开启 API-Only 模式,这些地区便不会显示 CMP 横幅。

在适用 Cookie 类别横幅的地区,它们还会保存 Cookie 类别选择(全部类别,或仅“绝对必要”),以及项目的自定义目的和自定义供应商。

要确定显示哪个首层界面,请调用 getPolicy()(自 SDK 26.10.0 版本起)。它按照与 CMP 相同的规则返回适用于该用户的政策:gdpr(IAB TCF)、tcfca(IAB TCF 加拿大)、uss(US State Privacy)、ccpa、categories(见下文 Cookie 类别)或 none。

import { useEffect } from 'react';
import { useConsent, getPolicy } from 'uniconsent-sdk';

// 在函数组件中
const { consentStatus } = useConsent();
useEffect(() => {
  if (consentStatus === 'pending') {
    // 用户需要做出选择:显示该政策对应的首层界面
    getPolicy().then(policy => { /* gdpr、tcfca 或 categories */ });
  }
}, [consentStatus]);

重要: 您的自定义首层界面仍须满足 IAB TCF 要求(披露目的和供应商,并以同等显著程度提供接受和拒绝选项)。用户仍应能够打开完整的 CMP 界面(openCMP())进行精细选择。

将同意同步到 WebView

如果您的应用打开了一个加载带有 UniConsent CMP 标签的网页的 WebView,您可以传递原生同意状态,这样 CMP 标签会识别现有的同意,不会再次显示横幅。

使用 getConsentSyncScript() 配合 injectedJavaScriptBeforeContentLoaded 在任何页面脚本运行之前注入同意信息:

import React, { useState, useEffect } from 'react';
import { WebView } from 'react-native-webview';
import { getConsentSyncScript } from 'uniconsent-sdk';

const MyWebView = () => {
  const [consentScript, setConsentScript] = useState<string | null>(null);

  useEffect(() => {
    getConsentSyncScript().then(setConsentScript);
  }, []);

  if (!consentScript) return null;

  return (
    <WebView
      source={{ uri: 'https://example.com' }}
      injectedJavaScriptBeforeContentLoaded={consentScript}
    />
  );
};

调试工具

SDK 提供了用于开发和调试的辅助函数:

import { listKV, clearKV } from 'uniconsent-sdk';

// Log all stored consent keys to console
await listKV();

// Clear all stored consent data
await clearKV();

配置

UniConsentProvider 属性

属性类型必填默认值说明
licenseIdstring是—您的 UniConsent Publisher ID (pid)。
displayModeCMPDisplayMode否'fullScreen'CMP 显示样式:'fullScreen'、'bottomSheet' 或 'dialog'。
heightRationumber否面板:0.9,对话框:0.7界面高度占屏幕高度的比例,范围 (0, 1]。适用于 'bottomSheet' 和 'dialog'。
widthRationumber否0.9(最大 500)对话框宽度占屏幕宽度的比例,范围 (0, 1]。仅适用于 'dialog'。
onEventCMPEventCallback否—SDK 生命周期事件回调(sdkInit、ready、uiDisplay、uiClose)。
langCodestring否设备语言CMP 语言,两个字母的代码,例如 'FR'。
testRegionstring否用户所在地区仅用于测试:按其他地区的用户显示 CMP:'EU'、'CA'(加拿大)、'CAQC'(魁北克)、'US' 加上州代码(如 'USCA' 或 'USTX'),或 'N'(以上地区以外)。发布版本中请删除。
logLevel'debug' | 'error'否'error''debug' 输出 SDK 和 CMP 页面的日志。

API 参考

组件和 Hooks

导出说明
UniConsentProvider用于包裹应用的 React 组件。需要 licenseId 属性。
useConsent()返回 { consentStatus, isLoading, openCMP } 的 Hook。

实用函数

函数返回值说明
getTCString()Promise<string>获取 IAB TCF 同意字符串。
isEURegion()Promise<boolean>检查用户是否在 EU/EEA 区域。
isPurposeConsented(purposeId)Promise<boolean>检查特定 TCF 目的的同意状态(基于 1 的 ID)。
isVendorConsented(vendorId)Promise<boolean>检查特定 TCF 供应商的同意状态(基于 1 的 ID)。
getConsentData()Promise<ConsentData>获取完整的同意数据对象。
getConsentSyncScript()Promise<string>获取用于向 WebView 注入同意信息的 JS 代码片段。
agreeAll()Promise<boolean>为所有目的、特殊功能和供应商授予同意(自定义首层)。
rejectAll()Promise<boolean>拒绝所有目的、特殊功能和供应商(自定义首层)。
getPolicy()Promise<string>适用于该用户的政策,用于您自己的首层界面:gdpr、tcfca、uss、ccpa、categories 或 none。
listKV()Promise<void>调试:将所有存储的同意键输出到控制台。
clearKV()Promise<void>调试:清除所有存储的同意数据。

导出类型

类型说明
CMPDisplayMode'fullScreen' | 'bottomSheet' | 'dialog'
CMPEventType'sdkInit' | 'ready' | 'uiDisplay' | 'uiClose'
CMPEventCallback(event: { type: CMPEventType }) => void
ConsentContextValueuseConsent() 返回值的类型定义。
ConsentDatagetConsentData() 返回值的类型定义。

ConsentData 字段

字段类型说明
tcStringstring完整的 IAB TCF 同意字符串。
isEURegionboolean用户是否在 EU/EEA 区域。
gdprAppliesbooleanGDPR 是否适用标志。
cmpSdkIdnumber注册的 CMP SDK ID(UniConsent 为 68)。
cmpSdkVersionnumberCMP SDK 版本。
policyVersionnumberTCF 政策版本。
purposeConsentsstring已同意目的的二进制字符串(例如 "10110")。
vendorConsentsstring已同意供应商的二进制字符串。
additionalConsentstringGoogle Additional Consent (AC) 字符串。
gvlVersionnumber使用的 Global Vendor List 版本。

打开指定界面及其他选项

可以在指定界面打开 CMP,例如从应用中的“隐私设置”链接打开。请求的界面总会打开。对于美国用户,设置界面会打开适用于他们的 CCPA 或 US State Privacy 设置。加拿大用户看到的是 IAB TCF 界面的 IAB TCF Canada 版本。

界面显示内容
CMPStage.GDPRFirstScreen首层界面(横幅)
CMPStage.GDPRSecondScreen设置(目的)
CMPStage.GDPRVendorsScreen供应商
CMPStage.CCPAFirstScreenCCPA 首层界面
CMPStage.CCPASecondScreenCCPA 设置
CMPStage.USStateFirstScreenUS State Privacy 首层界面
CMPStage.USStateSecondScreenUS State Privacy 设置
CMPStage.CategoriesFirstScreenCookie 类别首层界面(横幅)
CMPStage.CategoriesSecondScreenCookie 类别设置
import { UniConsentProvider, useConsent, CMPStage, getGEO, getGEOState } from 'uniconsent-sdk';

// 以法语而非设备语言显示 CMP,并输出调试日志(正式版本请使用默认的 'error')
<UniConsentProvider licenseId="YOUR_PUBLISHER_ID" langCode="FR" logLevel="debug">
  {/* 您的应用 */}
</UniConsentProvider>

// 仅用于测试:按其他地区的用户显示 CMP,'EU'、'CA'(加拿大)、'CAQC'(魁北克)、'US' 加上州代码(如 'USCA' 或 'USTX')、'BR'、'CN'、'ZA'、'VN' 或其他任何国家代码,或 'N'(以上地区以外)。也适用于 getPolicy() 和同意检查;正式版本中请删除
<UniConsentProvider licenseId="YOUR_PUBLISHER_ID" testRegion="CA">
  {/* 您的应用 */}
</UniConsentProvider>

// 在组件中:打开设置界面
const { openCMP } = useConsent();
openCMP(CMPStage.GDPRSecondScreen);

// 用户所在地区,以及美国和加拿大用户的州或省代码
const geo = await getGEO();
const state = await getGEOState();

IAB GPP 与 US Privacy

CMP 会按照 IAB 规范,将 IAB GPP 键和 US Privacy 键存储到应用的原生存储(Android 为 SharedPreferences,iOS 为 UserDefaults)中。应用内的广告 SDK 会从那里读取,无需修改代码。在 UniConsent 控制台的项目设置中启用 GPP、US State Privacy 或 IAB TCF 加拿大后会写入 GPP 键;只要启用 CCPA,就会写入 US Privacy 键。

键值
IABGPP_HDR_VersionGPP 版本(1)
IABGPP_HDR_SectionsGPP 字符串中的部分 ID,以 _ 分隔
IABGPP_HDR_GppString完整的 GPP 字符串
IABGPP_GppSID适用于该用户的部分 ID,以 _ 分隔;均不适用时为 -1
IABGPP_2_StringIAB TCF EU 字符串(适用 GDPR 时)
IABGPP_5_StringIAB TCF 加拿大字符串(适用加拿大 TCF 时)
IABGPP_6_StringUS Privacy 字符串(适用 CCPA 时)
IABGPP_7_StringUS National(usnat)字符串(适用 US State Privacy 或 CCPA 时)
IABGPP_8_String 至 IABGPP_27_String用户所在州的部分(8 加利福尼亚至 27 罗得岛),适用 US State Privacy 时写入,或在 CCPA 下写入加利福尼亚,遵循 GPP Sections 设置
IABUSPrivacy_String只要启用 CCPA 就会写入:在 CCPA 地区为用户的选择,否则为 1---

每次加载 CMP 以及每次做出同意选择后,这些键都会更新。关闭 GPP 后,IABGPP_ 键会被删除。 如需自行读取:

import DefaultPreference from 'react-native-default-preference';

const gppString = await DefaultPreference.get('IABGPP_HDR_GppString');
const gppSid = await DefaultPreference.get('IABGPP_GppSID');

美国和加拿大

应用支持与网站相同的美国和加拿大选项:CCPA、US State Privacy(包括州列表、GPP Sections 和 MSPA 设置)以及 IAB TCF 加拿大。对于适用 IAB TCF 加拿大的加拿大用户,在其做出选择之前,UniConsentProvider 会打开 CMP。美国隐私采用退出(opt-out)模式,因此不会主动询问美国用户:当您的应用调用 openCMP() 时(例如通过隐私设置链接),他们会看到美国横幅或设置。在此之前,启用 CCPA 或 US State Privacy 时,SDK 会为美国用户写入默认的 US Privacy 和 GPP 键,不显示任何内容:未退出;若设备关闭了广告跟踪,则为已退出。新的 Mobile App 项目默认关闭 US State Privacy,请在控制台中开启。

设备广告跟踪退出

当用户在设备上关闭广告跟踪时,CMP 会将其视为美国用户对出售、共享和定向广告的退出,与网站上的 Global Privacy Control 相同。在 iOS 上指 App Tracking Transparency 中不允许跟踪;在 Android 上指已删除广告 ID 或限制广告跟踪(应用包含 Google Play 服务时通过其读取)。用户之后在横幅中保存的选择优先。

读取 GPP 和 US Privacy 字符串

SDK 也会返回已存储的字符串:

import { getGPPString, getGPPSID, getUSPrivacyString } from 'uniconsent-sdk';

const gppString = await getGPPString();
const gppSid = await getGPPSID();
const usPrivacy = await getUSPrivacyString();

自 SDK 26.10.0 版本起可用。当某个地区使用 Cookie 类别而不是 IAB TCF 或美国政策时,CMP 会显示包含四个类别的横幅:绝对必要、性能、功能性、定向或广告。适用于:

  • 巴西的 LGPD、中国的 PIPL、南非的 POPIA 和越南的 PDPD(在 UniConsent 控制台的项目设置中开启时)
  • 您为其他国家设置的规则:针对某个国家的规则,以及针对其余所有国家的规则
  • Consent Categories 项目,在其设置的地区

选择加入(opt-in)类别初始只开启“绝对必要”,在用户做出选择之前,以及您更改配置版本之后,UniConsentProvider 会打开 CMP(consentStatus 为 pending)。选择退出(opt-out)类别初始开启所有类别(在美国,若设备关闭了广告跟踪,则关闭“定向或广告”),应用不会主动询问:用户可通过您的隐私设置链接更改。选择退出适用于其他国家的 opt-out 规则,以及应用中位于美国的 Consent Categories 项目。

使用 CMPStage.CategoriesFirstScreen(横幅)和 CMPStage.CategoriesSecondScreen(设置)打开类别界面。testRegion 属性也支持 BR、CN、ZA、VN 及其他国家代码,用于测试这些地区。

自定义目的和自定义供应商

自 SDK 26.10.0 版本起可用。您在 UniConsent 控制台项目设置中添加的自定义目的和自定义供应商会显示在 CMP 界面中:自定义目的显示在 IAB TCF 首层界面和设置以及 Cookie 类别设置中,自定义供应商显示在 IAB TCF 供应商列表中。在 CCPA 和 US State Privacy 设置中,只列出敏感的自定义目的。在 Cookie 类别设置中,自定义供应商跟随“定向或广告”类别。在不适用 IAB TCF 的地区(Cookie 类别和美国),自定义供应商以只读方式列在菜单的供应商列表中,并在 Cookie 类别设置的“定向或广告”下列出。

要据此启动或停止您自己的 SDK,请询问 SDK 应用现在是否可以使用某个自定义目的或自定义供应商。结果遵循用户适用的政策,规则与 CMP 用于标签的规则相同:

  • IAB TCF、IAB TCF 加拿大和选择加入(opt-in)的 Cookie 类别:仅在用户同意后允许
  • 美国和选择退出(opt-out)的 Cookie 类别:在用户退出之前允许;敏感的自定义目的需要用户同意,在美国若设备关闭了广告跟踪,则自定义供应商关闭
  • 无政策:允许
import { isCustomPurposeConsented, isCustomVendorConsented, getCustomConsents } from 'uniconsent-sdk';

// 在 async 函数中
if (await isCustomPurposeConsented(1)) {
  // 启动自定义目的 1 涵盖的 SDK
}
const vendorAllowed = await isCustomVendorConsented(2);
const all = await getCustomConsents(); // { purposes: { '1': true }, vendors: { '2': false } }

在 CMP 关闭或同意变化后请再次调用。项目中不存在的 ID,以及 SDK 就绪前的所有 ID,都返回 false。

第三方 SDK 披露

CMP 可以列出您应用中的第三方 SDK(广告网络、分析、归因等),包括其公司、用途和隐私政策。用户在供应商列表中查看它们,在所有地区均为只读:没有开关,您的应用仍根据用户对目的或 Cookie 类别的选择来开启或关闭各个 SDK。

要设置列表,请在应用项目的 Step 4: Advanced Features 中开启 Enable Third-party SDKs,在 Third-party SDKs 标签页中选择您的 SDK 或添加自己的 SDK,然后保存并发布。您的应用中无需任何代码。

注意事项

  • 隐私设置访问: 您的应用应为用户提供一种持久的方式(例如在设置菜单中放置"隐私设置"按钮或链接)来访问和更新他们的同意选择。此按钮应调用从 useConsent hook 获取的 openCMP() 函数。
  • 自动同意检查: UniConsentProvider 在应用启动时会自动检查同意状态,包括自用户上次授予同意以来 Global Vendor List (GVL) 是否已更新。如果 GVL 版本发生变化,将重新提示用户。

更新日志

26.10.0

  • 为广告 SDK 写入 IAB GPP 和 US Privacy 键
  • 应用支持 US State Privacy 和 IAB TCF 加拿大,包括自定义首层界面
  • 新增 getGPPString()、getGPPSID() 和 getUSPrivacyString()
  • 使用 openCMP(stage) 打开指定界面;新增 langCode 和 logLevel 属性、getGEO() 和 getGEOState()
  • 使用 CMPStage.CCPAFirstScreen 和 CMPStage.USStateFirstScreen 打开 CCPA 和 US State Privacy 首层界面;新增 testRegion 属性,可按其他地区(例如加拿大)的用户测试 CMP
  • 应用支持 Cookie 类别:LGPD(巴西)、PIPL(中国)、POPIA(南非)、PDPD(越南)、您为其他国家设置的规则以及 Consent Categories 项目,界面为 CMPStage.CategoriesFirstScreen 和 CMPStage.CategoriesSecondScreen
  • 新增 getPolicy();agreeAll() 和 rejectAll() 还会保存 Cookie 类别、自定义目的和自定义供应商
  • testRegion 属性也支持 BR、CN、ZA、VN 及其他国家代码,并适用于 getPolicy() 和同意检查
  • 新增 isCustomPurposeConsented()、isCustomVendorConsented() 和 getCustomConsents():应用按照用户适用的政策现在可以使用的自定义目的和自定义供应商

26.9.0

  • 支持 IAB TCF 2.4

掌握隐私与同意管理的最新动态

隐私法规、同意管理与合规动态,每月几封邮件。

无垃圾邮件,可随时退订。 隐私