如何使用桌面应用程序的测量协议

How to use measurement protocol for desktop application

我试过的是,

[与 POST]

jQuery.support.cors = true;

$.ajax({
    url : "https://www.google-analytics.com/collect?v=1&tid=UA-XXXXXXXX-1&cid=e8efa9cb-7b9e-479e-b07b-1528547dcdb4&t=event&ec=UX&ea=click&z=123456",
    type : 'POST',
    cache : false,
    dataType : 'json',
    success:function(data) {
        alert("Success: " + JSON.stringify(data));
    },
    error: function(data) {
        alert("Failure: " + JSON.stringify(data));
    }
});

或[使用 GET]

jQuery.support.cors = true;

$.ajax({
    url : "https://www.google-analytics.com/collect?v=1&tid=UA-XXXXXXXX-1&cid=e8efa9cb-7b9e-479e-b07b-1528547dcdb4&t=event&ec=UX&ea=click&z=123456",
    dataType : 'json',
    success:function(data) {
        alert("Success: " + JSON.stringify(data));
    },
    error: function(data) {
        alert("Failure: " + JSON.stringify(data));
    }
});

单击按钮我添加了这段代码。

我的状态为 200,但是在 google 分析报告 [实时数据] 中显示没有活跃用户。如果我查看前几天的报告,它会显示一些用户会话数。

我相信这不是技术问题,而是数据兼容性问题。 你使用的CID好像不符合GA的cid结构,是[10位][点][10位],即1234567890.1234567890 尝试强制使用不同的 ID 来检查我的解决方案。

测量协议处理事件的方式似乎存在错误。我在此处为此创建了一个问题:Issue 848: Events not showing up on Real-time reports

您不发送应用程序变量,数据将不会显示在 real-time 报告中。一旦你发送一个带有它的请求,它们就会再次弹出,但是如果你发送另一个没有它的事件,它们就会丢失。目前没有文档要求应用程序变量。此外,根据您的请求进行的调试会返回有效的命中数据。

https://www.google-analytics.com/debug/collect?v=1&tid=UA-xxxxx-1&cid=e8efa9cb-7b9e-479e-b07b-1528547dcdb4&t=event&ec=UX&ea=click&z=123456

{
  "hitParsingResult": [ {
    "valid": true,
    "parserMessage": [ ],
    "hit": "/debug/collect?v=1\u0026tid=UA-xxxxx-1\u0026cid=e8efa9cb-7b9e-479e-b07b-1528547dcdb4\u0026t=event\u0026ec=UX\u0026ea=click\u0026z=123456"
  } ],
  "parserMessage": [ {
    "messageType": "INFO",
    "description": "Found 1 hit in the request."
  } ]
}

解决方案/解决方法:

将以下项目添加到您的请求中应该可以解决问题。同样在这个时候,没有记录他们是必需的。但是,我的测试表明,当您发送这些内容时,real-time 报告中的所有内容都会再次正确显示。

cd=ScreenName&an=ApplicationName&aid=ApplicationId&av=3.0&ai‌​id=1.0

您可能遇到的问题:

  1. 希望 "UA-XXXXXXXX-1" - 这只是代码示例,您在代码中使用了 "real" GA ID。
  2. 关于 ClientID:在 GA docs 中,您可能会看到类似于“35009a79-1a05-49d7-b876-2b884d0f825b”的 ClientID。但是此 ClientID 应该与访问您网站的网站用户的某些 ClientIDs 相匹配。如果没有特定设置,GA 将不会生成像“35009a79-1a05-49d7-b876-2b884d0f825b”这样的 ClientID,因为 GA 会自动生成 XXXXXXXXXX.XXXXXXXXXX 格式的 ClientID,例如“1068584379.1447331221”。

如何手动查找 ClientID:为您的网站查找“_ga”cookie,它应该类似于 "GA1.2.1068584379.1447331221"。此 cookie 中的 ClientID 为 1068584379.1447331221

如何在JS-srcipt中获取这个参数:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});

请记住,ClientID 标识每个唯一用户(浏览器)并将通过测量协议发送的用户数据与在 client-side(通过 GA js 库)上收集的用户数据联系起来。因此,要在 GA 报告中查看数据(由 Measurement Protocol 发送),最好使用 "real" ClientID,对于过去访问过网站的用户。