Phonegap谷歌分析根本没有跟踪

时间:2013-11-16 16:30:54

标签: javascript cordova google-analytics

这是我的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=".*"/>

3 个答案:

答案 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