分册导航
CMP JS API
定位与分类
解决网页里的 Vendor 怎么向同意管理平台(Consent Management Platform,CMP)获取隐私状态问题。在浏览器侧的三个入口:__gpp()(全球隐私平台(Global Privacy Platform,GPP)的 CMP API v1.1,2023-06)/ __tcfapi()(透明度与同意框架(Transparency & Consent Framework,TCF)2.2 之前的入口,现仍并存)/ __uspapi()(USPrivacy legacy)。队列-回调模型、泛型命令集与 PingReturn / TCData 返回体结构(getGPPData 命令与 GPPData 对象在 v1.1 已废弃)。
- 承载点
- __gpp() · __tcfapi() · __uspapi()
- 状态
- GPP CMP API v1.1 (2023-06)
字符串与字段布局
泛型命令(与 section 无关,CMP 必须全部支持)
- __gpp('ping')
- __gpp('addEventListener')
- __gpp('removeEventListener')
- __gpp('hasSection')
- __gpp('getSection')
- __gpp('getField')
泛型命令与具体 section 无关,CMP 必须全部支持,且在 stub 阶段即同步可用(不入队)。getGPPData 命令与 GPPData 对象在 v1.1 已废弃,其信息并入 ping 返回的 PingReturn。
PingReturn
| 字段 | 说明 |
|---|---|
| gppVersion | GPP API 版本,当前 "1.1" |
| cmpStatus | stub / loading / loaded / error |
| cmpDisplayStatus | hidden / visible / disabled |
| signalStatus | not ready / ready |
| supportedAPIs | 支持的 section 列表,形如 ["2:tcfeuv2", "6:uspv1"] |
| cmpId | 互动广告局(Interactive Advertising Bureau,IAB)分配的 CMP ID,stub/loading 期可为 0;对无注册要求的 section(如美国全国信号)字符串创建者用 1 |
| applicableSections | 本次交易生效的 section ID:通常单个,少数 2 个;过渡期(至 2023-09-30)legacy USPrivacy §6 与另一美国 section 并存时可达 3 个;无适用时为 [-1] |
| gppString | 完整编码的 GPP 字符串,CMP 加载期可为空 |
| parsedSections | gppString 中本页 supportedAPIs 支持的各 section 的已解析对象(与 getSection 返回一致,可含 subsection) |
承载与访问
__gpp 是 GPP 时代的统一入口;__tcfapi 是 TCF 2.2 之前的入口,现仍并存——欧洲经济区(European Economic Area,EEA)规范要求在独立 TC String 场景下继续实现;__uspapi 是 USPrivacy 的 legacy 入口。三者共用同一队列-回调调用模型(command + callback + parameter)。
CMP 未加载时,页面上的 stub 必须把调用压入队列(如 __gpp 先是数组,push [command, callback, parameter]),CMP 加载后按调用顺序执行;但泛型命令须在 stub 阶段即同步响应。
失效形态
- 把 __gpp 当返回值函数用(它是队列-回调模型,结果经 callback 给出;泛型命令同步、其余可能异步)
- 继续依赖 getGPPData / GPPData(v1.1 已废弃,应改用 ping 的 PingReturn 配合 getSection / getField)
- applicableSections 为 [-1](无适用 section)时仍去解析某个 section