google-analytics - 将 Google Analytics 存储从 cookie 迁移到本地存储

标签 google-analytics

在我们了解 Google Analytics (analytics.js) 的不同存储选项之前,我们启动了我们的网站并使用了默认的、基于 cookie 的跟踪。我们现在要切换到使用 localStorage 存储客户端 ID。 ,这样我们就不必为每个请求将 cookie 发送到服务器。

是否可以迁移设置了 cookie 的用户,以便不是每个 session 都会显示为新的全新用户?

最佳答案

这当然是可能的,诀窍是当您找不到存储在本地存储中的 id 时,让 Google Analytics 脚本为您从 cookie 中提取客户端 id。

/* Google Analytics initialization code */
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga')

/* Fallback to cookies if the browser doesn't support localStorage */
if (!window.localStorage) {
  ga('create', 'UA-XXXXX-Y', 'auto')
}

/* If we are already using localStorage, continue with that */
else if (localStorage.getItem('gaClientId')) {
  ga('create', 'UA-XXXXX-Y', { storage: 'none', clientId: localStorage.getItem('gaClientId') })
}

/* Migrate users from cookies to localStorage */
else if (document.cookies.indexOf('_ga') !== -1) {
  ga('create', 'UA-XXXXX-Y', { cookieExpires: 1 })
  ga(function (tracker) { localStorage.setItem('gaClientId', tracker.get('clientId')) })
}

/* Setup a fresh user */
else {
  ga('create', 'UA-XXXXX-Y', { storage: 'none' })
  ga(function (tracker) { localStorage.setItem('gaClientId', tracker.get('clientId')) })
}

ga('send', 'pageview')

在之前的 cookie 超时(如果未指定,则默认为 2 年)之后,删除 cookie-migration 部分应该是安全的。该脚本将如下所示:
/* Google Analytics initialization code */
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga')

/* Fallback to cookies if the browser doesn't support localStorage */
if (!window.localStorage) {
  ga('create', 'UA-XXXXX-Y', 'auto')
}

/* Store Google Analytics client ID in localStorage */
else {
  ga('create', 'UA-XXXXX-Y', { storage: 'none', clientId: localStorage.getItem('gaClientId') })
  ga(function (tracker) { localStorage.setItem('gaClientId', tracker.get('clientId')) })
}

ga('send', 'pageview')

关于google-analytics - 将 Google Analytics 存储从 cookie 迁移到本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50242185/

相关文章:

javascript - 衡量产品点击 - 增强型电子商务 Google Analytics

node.js - 如何将 Google Analytics 跟踪代码与 node-express 应用程序一起使用?

google-analytics - 谷歌分析目标漏斗可视化

angular - 如何在 Angular Cli 应用程序中包含 Google Analytics

google-analytics - 从嵌入的代码中获取Google Analytics(分析)ID?

java - 如何在谷歌分析中为屏幕浏览量应用过滤器

android - 在单个 Android 应用程序中使用多个 firebase 帐户进行谷歌分析

google-analytics - 从类里面获得ID的值(value)

java - 在 Activity 中设置谷歌分析跟踪器时,类型 Activity 的 getActivity() 方法未定义

ios - 适用于 iOS 的 Google Analytics(分析)SDK 崩溃