如何配置我的Google Analytics(分析)帐户以接受来自file:// urls的请求?

时间:2014-12-19 07:42:41

标签: cordova google-analytics

我试图让谷歌分析与我的PhoneGap / Cordova应用程序一起使用。

默认情况下,analytics.js lib不会从file:// type urls发送请求。我发现从this site和它指向的StackOverflow question,我可以通过配置GA来使分析库使用本地存储而不是cookie来跟踪客户端ID:< / p>

(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','http://www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-XXXXX-1', 'auto', {
        'allowLinker': true,
        'storage': 'none','clientId':localStorage.getItem('gaClientId')
    });
ga(function(t){localStorage.setItem('gaClientId',t.get('clientId'));});

然后我可以通过添加以下内容让图书馆从非http / https网址发送请求:

ga('set', 'checkProtocolTask', null);

现在我可以从浏览器控制台看到,该库正在向google-analytics.com发送页面浏览,类似于以下内容:

http://www.google-analytics.com/collect?v=1&_v=j31&a=6458293880&t=pageview&_s=1&dl=file%3A%2F%2F%2Fpath%2Fto%2Findex.html&ul=en-us&de=ISO-8859-1&sd=24-bit&sr=1440x900&vp=1283x150&je=1&fl=16.0%20r0&_u=cGAAAAQB~&cid=389492833.14589283847&tid=UA-XXXXX-1&z=1277371227

但是,在google-analytics.com方面,Google一旦收到请求就会忽略该请求,并且我的帐户中没有任何内容显示。如果我手动更改&#34; dl =文件...&#34;上述网址的一部分为&#34; dl = http ...&#34;然后Google接受了它,我立即在&#34; Real-Time&#34;我的帐户标签。

所以,似乎我已经正确设置了浏览器方面,但是......

  1. 如何配置我的Google分析帐户以接受浏览器发送的请求?
  2. 或者,有没有办法配置浏览器端的东西,以便它发送&#34; dl = http://..."而不是&#34; dl = file://...",即使它来自file:// URL?
  3. (如果我不得不选择一个答案,我想我可能更喜欢对#2而不是#1的答案。)

    我知道有一个cordova plugin for google analytics,但是我没有运气得到那个工作,而且,即使我让它工作,我也需要我的应用能够记录多个谷歌分析帐户,我不认为该插件可以做。

1 个答案:

答案 0 :(得分:5)

在浏览缩小的Google代码之后,我在原始问题中找到了#2的答案:

ga('set', 'checkProtocolTask', function(data) {
    data.set('location', 'http://whatever.host.I.want.com');
});

覆盖&#34; checkProtocolTask​​&#34;像这样做有两件事:

  1. 默认/原始&#34; checkProtocolTask​​&#34;检查请求是否来自http / https并引发file:// URL的异常。覆盖这将阻止发生这种情况。
  2. 这个方法(就像迭代调用的所有14个左右的任务一样)提供了一个数据对象,用于构建发送到google-analytics.com的请求。此数据对象包含一个&#34;位置&#34;财产,最终变成了&#34; dl&#34;发送到谷歌的查询字符串参数。通过更改&#34;位置&#34;,因此,&#34; dl&#34; param,对于http网址,您可以阻止Google忽略该匹配。
  3. 更改&#34; dl&#34;相反,您可以覆盖&#34; buildHitTask&#34;,这可能是一个更适合命名的任务,用于修改&#34; hit&#34;这是发送给谷歌的。但是,我不知道原始buildHitTask()的所有内容,所以除非您进一步调查,否则我会毫不犹豫地更换它。我知道&#34; checkProtocolTask​​&#34;可以安全地替换,因为很清楚它应该是什么工作。