Tro*_*roy 1 google-analytics cordova
我正在尝试使用我的PhoneGap/Cordova应用程序进行谷歌分析.
默认情况下,analytics.js lib不会从file:// type urls发送请求.我发现从这个站点,以及它指出的StackOverflow问题,我可以通过配置GA来使分析库使用本地存储而不是cookie来跟踪客户端ID:
(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'));});
Run Code Online (Sandbox Code Playgroud)
然后我可以通过添加以下内容让库从非http/https网址发送请求:
ga('set', 'checkProtocolTask', null);
Run Code Online (Sandbox Code Playgroud)
现在,我可以从浏览器控制台看到该库正在向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
Run Code Online (Sandbox Code Playgroud)
但是,在google-analytics.com方面,Google一旦收到请求就会忽略该请求,并且我的帐户中没有任何内容显示.如果我手动将上述网址的"dl = file ..."部分更改为"dl = http ...",那么Google会接受它,我会立即在我帐户的"实时"标签下看到该请求.
所以,似乎我已经正确设置了浏览器方面,但......
(如果我不得不选择一个答案,我想我可能更喜欢对#2而不是#1的答案.)
我知道有一个用于谷歌分析的cordova插件,但我没有太多运气让这个工作,并且,即使我让它工作,我需要我的应用程序能够登录到多个谷歌分析帐户,我不认为该插件可以做.
在浏览缩小的谷歌代码后,我在原始问题中找到了#2的答案:
ga('set', 'checkProtocolTask', function(data) {
data.set('location', 'http://whatever.host.I.want.com');
});
Run Code Online (Sandbox Code Playgroud)
像这样覆盖"checkProtocolTask"有两件事:
要更改"dl"参数,您可以覆盖"buildHitTask",这可能是更适合命名的任务,用于修改发送给Google的"匹配".但是,我不知道原始buildHitTask()的作用是什么,所以除非你进一步调查,否则我会毫不犹豫地更换它.我知道"checkProtocolTask"可以安全替换,因为很清楚它应该是什么工作.
| 归档时间: |
|
| 查看次数: |
699 次 |
| 最近记录: |