在javascript客户端和java服务器之间共享Google Analytics客户端ID

我一直在使用Google Analytics对我的网络应用程序进行基本分析 - 只是使用JavaScript调用来跟踪页面展示次数,如下所示:

ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com');ga('send', 'pageview')

这种方法总是让我感到沮丧,因为我无法可靠地捕获一些服务器端事件。 我刚刚发现我可以使用Measurement Protocol来记录服务器端的事件。 在我的服务器上记录事件看起来很简单,除了关于cid(clientid)参数...

我的理解是,在浏览器中,使用javascript我现在已将cid随机创建,然后存储在_ga cookie中。 我也明白,我应该在客户端('页面视图')和服务器(其他事件)呼叫之间共享同一客户端的clientid / cid值,以便将它们关联在一起。

这个StackOverflow链接对我来说是一个有用的参考。

问题是:我应该

  • 在服务器上创建一个clientid,然后与客户端共享; 要么
  • 我应该让客户端上的JavaScript创建客户端,然后尝试与我的服务器共享吗? (我怀疑这是更好的答案)
  • 对于(1),我想我能做的是:

  • 将UUID存储在服务器上的会话中(这是谷歌应用程序引擎)
  • 当我使用Measurement Protocol直接在服务器端创建事件时,直接使用该UUID
  • 当我使用jsp在页面上创建一个ga对象时,使用相同的UUID:

    ga('create', 'UA-XXXXXXXXX-1', 'mydomain.com', 
    {'clientId': '<%=[value from the session]%>'});
    
  • 让我担心这种方法的事情是ID只会在服务器上的会话中持续存在。 我认为clientId(cid)的意图是它持续了很长时间的客户......因此,我认为我将失去跟新用户和返回用户的关系?

    对于(2),坦率地说,我不知道如何做到这一点...我从上面的StackOverflow链接知道,我可以从ga对象中的clientId参数中获取cid。 我不知道如何将它发回我的服务器(这可能是一个简单的JavaScript问题)。

    肯定会赞赏使用哪种方法的建议....谢谢!


    我也建议你选择2:让Google处理cid参数的设置。

    由于该参数已在您的域的_ga cookie中设置,因此每个HTTP请求都会将其传递到您的应用服务器。

    所有你需要做的是在服务器端

  • 从_ga cookie中提取CID
  • 将其链接到当前用户(您的应用程序可能使用自己的会话Cookie来识别用户)
  • 例如,这个答案提供了Rails代码:

    def save_google_analytics_client_id
        if current_user && cookies["_ga"]
          client_id = cookies["_ga"].split(".").last(2).join(".")
          if current_user.google_analytics_client_id != client_id
            current_user.google_analytics_client_id = client_id
            current_user.save
          end
        end
      end
    
    链接地址: http://www.djcxy.com/p/25233.html

    上一篇: Sharing Google Analytics ClientID between javascript client and java server

    下一篇: Creating Custom UIView and display as Pop Up in Swift