按照 Google 说明 我正在我正在开发的网站上设置同意。 我可以通过 GTM 和其他一切设置
gtag()
同意,我想知道:如何取回用户在 gtag('consent')
中设置的值? (如default|update
和ad_user_data
、functionality_storage
等)
gtag('get')
选项,但 gtag('consent')
似乎是一个完全不同的选项,gtag('get')
不起作用,并且我无法检索设置的值。
我不是这个主题的专家,但我发现了一些对我有用的东西:
dataLayer
是一个变量,似乎包含了gtag的所有内部数据。 因此你可以做什么:
Object.values(dataLayer).filter(a=> typeof a === 'object' && a?.[0] === 'consent')
应返回所有同意书。这应该从 dataLayer 返回有关同意的所有同意对象。
由于它存储了对数据层的所有更改的历史记录,我个人更喜欢有一个仅代表当前同意状态的对象:
//merges an array of objects into a single object, where properties from later objects overwrite those from earlier ones
function mergeObjects(array) {
return array.reduce((acc, obj) => ({ ...acc, ...obj }), {});
}
const consentHistory = Object.values(dataLayer).filter(a=> typeof a === 'object' && a[0] === 'consent');
mergeObjects(consentHistory.map(a=>a?.[2]||{}));
此代码片段在我这边返回:
{
"ad_storage": "granted",
"ad_user_data": "granted",
"ad_personalization": "granted",
"analytics_storage": "granted",
"functionality_storage": "granted",
"personalization_storage": "granted",
"security_storage": "granted"
}
请注意,我没有详细测试它。