这是我的main.js文件
/* Google Analytics */
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') +
'.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
var _gaq = _gaq || [];
function _track(page){
try {
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']); /* But with my correct one */
console.log('google analytics:' + page);
if (page != '') {
_gaq.push(['_trackPageview', 'Mobile: '+page]);
} else {
_gaq.push(['_trackPageview'],'Mobile');
}
} catch(err) {
console.log(err);
}
}
所以每当我想跟踪我使用的任何页面时,
_track('/top-rated/');
我可以看到这个日志:
google analytics: /top-rated/
但我无法在实时谷歌分析页面中看到日志
顺便提一下我的config.xml
<access origin=".*"/>
答案 0 :(得分:13)
GA无法在设备中运行的原因是因为Google Analytics会将协议期望为HTTP或HTTPS,但是当您加载应用时,协议就是file:///,因为您在WebView中从设备打开文件
在这种情况下,GA不允许存储cookie。关闭。另外还有一个名为analytics.js的新版ga.js(也称为Universal Analytics),它基本上是一个高级版本。您可以在此处找到版本之间的差异 - http://www.cardinalpath.com/which-version-of-google-analytics-is-right-for-you-determine-whether-you-should-upgrade-to-universal-analytics/
如果您想继续使用ga.js,那么您可以使用它 -
https://github.com/ggendre/GALocalStorage
它是一个GitHub项目,解决了文件:///问题。
如果您想使用Universal Analytics,那么您可以使用它 -
http://www.blastam.com/blog/index.php/2013/07/ga-universal-analytics-phonegap-mobile-apps/
它是一个使其与Phonegap兼容的指南
答案 1 :(得分:3)
使用Phonegap,您打开文件URI,通常将origin属性设置为null,即使它取决于浏览器。考虑到它源自AJAX请求的事实,需要为大多数Web服务器指定该属性以接受请求,如本例所示。它也可能是cookie的问题,这可能是问题所在。
在这种情况下,此网址将有效:https://github.com/ggendre/GALocalStorage。要使其正常工作,您必须为Phonegap启用localstorage。
如果请求存在问题,您可以添加一个没有内容的1平方像素的png文件,这样您就有机会在到达服务器时收集数据。这里唯一的问题是,这不允许您使用Google Analytics。
要解决此问题,您可以设置网络服务并将Google Analytics中的所有网络请求更改为指向您的服务器,然后您可以将这些请求代理回Google服务器以解决此问题。
在您的服务器中,您需要设置此属性才能从Phonegap获取访问权限:
Access-Control-Allow-Origin: *
您可以使用Node.JS和NPM包管理器提供的node-http-proxy之类的东西,这应该很简单,因为它是全部javascript。之后,您只需将所有对Google Analytics Domain的引用转换为指向您本地Google Analytics文件副本中的Web服务器。
您只需将Google Analytics javascript文件中网址的域部分更改为指向您的服务器并获取该域并将其放入Node.JS代理中,这可能不像大多数人认为的那么难
如果您想要更清晰,请随时给我留言。我可能在感恩节期间很忙,但我会尝试尽可能多地检查。
答案 2 :(得分:2)
你可以使用一个cordova插件,让生活更轻松..
http://www.raymondcamden.com/index.cfm/2013/3/28/Google-Analytics-and-PhoneGap