我想提出一个应用程序,我想从用户的分析。 我试图用PhoneGap的插件,但我没有任何运气努力实现它。
我想知道是否有可能通过处理像一个正常的网页应用程序,并把一些JavaScript在我的网页的头部,以获得谷歌Analytics(分析)。
有一个更好的方法吗? 并且是PhoneGap的谷歌分析比我试图做的好得多?
我想提出一个应用程序,我想从用户的分析。 我试图用PhoneGap的插件,但我没有任何运气努力实现它。
我想知道是否有可能通过处理像一个正常的网页应用程序,并把一些JavaScript在我的网页的头部,以获得谷歌Analytics(分析)。
有一个更好的方法吗? 并且是PhoneGap的谷歌分析比我试图做的好得多?
谷歌Analytics(分析)现在有一个选项,在这里解释使用localStorage的,而不是饼干,还有一个黑客,使其在网页视图工作( file://
网址)。 因此,不是用我以前建议的代码,你可以这样做:
// THIS IS FOR LOCALSTORAGE
var GA_LOCAL_STORAGE_KEY = 'ga:clientId';
ga('create', 'UA-XXXXX-Y', {
'storage': 'none',
'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
});
ga(function(tracker) {
localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
});
// THIS IS FOR FILE URL SUPPORT
ga('set', 'checkProtocolTask', function(){ /* noop */});
// And then as usual...
ga('send', 'pageview');
由Alex建议的pokki溶液与一些调整,做工精细,除去Pokki的需要。
我创建了这个在这里清理后的版本一个Git项目:
https://github.com/ggendre/GALocalStorage
适用于Android 4.1和iOS6的伟大,我会很快测试更多的设备。 希望这可以帮助 ! :)
看看录像,看看它在行动:
http://screencast.com/t/6vkWlZOp
经过一番研究,我发现了一个解决方案。 我碰到这个线程来对谷歌的PhoneGap组: https://groups.google.com/forum/#!msg/phonegap/uqYjTmd4w_E/YD1QPmLSxf4J (感谢TIMW和丹·莱文!)在这个线程我发现这是可能的使用谷歌分析无需插件。 所有你需要做的就是下载谷歌从ga.js文件http://www.google-analytics.com/ga.js (只保存页面为您的www文件夹中)
然后加入一个字符,它修改ga.js文件。 搜索ga.js文件单词“文件:”并将其替换为“_file”。
在我挂到上面的线索,“TIMW”解释这样做的原因:
///网址:从本质上讲,如果从一个文件中使用其正谷歌分析是行不通的。 在iOS中/ PhoneGap的是这种情况。 为了解决这个问题,必须先下载从谷歌ga.js文件,并把它作为当地构建的一部分。 你会发现这个文件进行模糊处理。 搜索字符串“文件:”文件应该只发生一次。 当你找到它,添加下划线开始(所以它变成“_file”)。 这防止它相匹配的页面位置的协议(这是“文件:”)。
当你添加一个字符的ga.js文件,只需这包括按照你的页面的顶部:
<script type="text/javascript" src="ga.js"></script>
<script>
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-YOUR_ID_HERE']);
_gaq.push(['_setDomainName', 'none']);
_gaq.push(['_trackPageview', 'NAME_OF_PAGE']);
</script>
我测试了这个在模拟器上,我得到了一个证明,它是使用谷歌分析的实时视图中工作。 该模拟器是工作在iOS 5.0。 我的手机仍然是在iOS 4.2,而当我测试我的设备上,它并没有对实时跟踪显示。
在线程,有人提到了同样的问题与Android 4.0 + ......但愿会有这个在未来更好的解决方案,但现在这是获得基本的分析我的应用程序的最简单和最复杂的方式。 它不能做离线跟踪,但还有点儿毛骨悚然反正。
虽然iOS 4的和Android用户在市场上的少数(见饼图):
http://static7.businessinsider.com/image/4fd65fac6bb3f7925700000f/chart-of-the-day-ios-vs-android-june-2012.jpg
我会STIL想从所有操作系统的获取数据。
这是2月2017年有没有需要编辑的analytics.js,也不是一个库或插件了,或者至少我没有需要他们。 这是在过去的几年中说,许多东西都过时或陈旧的只是,所以这里是我的了最新的综合指南。
1. config.xml文件
在你的config.xml,你必须允许跨站点请求:
<access origin="https://www.google-analytics.com" />
2. HTML
在您的CSP meta标签,如果你选择有一个,还必须允许谷歌电话。 它可能看起来像:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-inline' 'unsafe-eval' https://ssl.gstatic.com https://www.google-analytics.com;">
3. JavaScript的
以下是一个既可以在浏览器中,并在科尔多瓦打包应用程序运行web应用程序的注释代码。 您可以忽略else
块,如果你不关心浏览器。
// the default GA code, nothing to change
(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','https://www.google-analytics.com/analytics.js','ga');
var fields = {
// note: you can use a single tracking id for both the app and the website,
// don't worry it won't mix the data. More about this in the 3rd section
trackingId: 'UA-XXXXXXXX-Y'
};
// if we are in the app (the protocol will be file://)
if(document.URL.indexOf('http://') !== 0){
// we store and provide the clientId ourselves in localstorage since there are no
// cookies in Cordova
fields.clientId = localStorage.getItem('ga:clientId');
// disable GA's cookie storage functions
fields.storage = 'none';
ga('create', fields);
// prevent tasks that would abort tracking
ga('set', {
// don't abort if the protocol is not http(s)
checkProtocolTask: null,
// don't expect cookies to be enabled
checkStorageTask: null
});
// a callback function to get the clientId and store it ourselves
ga(function(tracker){
localStorage.setItem('ga:clientId', tracker.get('clientId'));
});
// send a screenview event
ga('send', {
// these are the three required properties, check GA's doc for the optional ones
hitType: 'screenview',
// you can edit these two values as you wish
screenName: '/index.html',
appName: 'YourAppName'
});
}
// if we are in a browser
else {
ga('create', fields);
// send a pageview event
ga('send', {
// this is required, there are optional properties too if you want them
hitType: 'pageview'
});
}
3.您的帐户GA
App
类型。 如果不需要监视来自网站的web应用程序的流量,你可以停止阅读这里,否则就继续阅读。 我假设你使用的是单一账户的网站和应用程序都进行跟踪。
screenview
命中。 有一个官方指南这里 Website
类型。 应用自定义过滤器“应用程序?=>不”就可以了。 App
类型。 默认情况下(不带过滤器),它会显示所有数据。 补充说明
<access>
和CSP *.google-analytics.com
在CSP是行不通的。 虽然该政策在Chrome的工作(56),它并没有在科尔多瓦(5.6.0) 我是用离子应用(基于科尔多瓦)的移动网站和GA正在为它。 当我运同应用提供原生iOS,它停止工作。
第1期。
在检查模拟器的日志,发现GA没有被正确加载。 它试图加载file://
。 为了解决这个问题,我前置https:
以GA网址下
(window,document,'script','//www.google-analytics.com/analytics.js','ga')
如果页面协议不是HTTP或HTTPS 问题2.谷歌在默认情况下将中止请求。 为了解决这个问题
ga('set', 'checkProtocolTask', null);
而且你应该设置。 做了这些改变之后,我能够证实在GA的事件。 希望它可以帮助你。
没有为我工作。 这个问题,谷歌代码使用cookie,它不与文件工作://网址。
我发现,使用localStorage的替代饼干良好的执行: https://developers.pokki.com/docs/tutorials.php
我已经实现了segment.io - 在HTML5 /流星应用analytics.js库。
我在PhoneGap的(3.1)没有任何分析工具插件。 立即适用于iOS的工作。
实施后,从Android应用分析没有显示约4小时。 然后,它开始不改变的PhoneGap或流星设置工作。
希望这可以帮助别人避免寻找一个神秘的错误了几个小时。
注意:确保正确的访问原点设置如增加
这PhoneGap的插件将有助于整合PhoneGap的应用程序的谷歌分析。 阅读这篇博客 ,了解更多如何整合谷歌分析中的PhoneGap。 您也可以从下载工作演示代码在这里 。
对于运行与纪尧姆Gendre的在Android 4.1或其他特定平台很好的解决方案问题的人,这可能会解决这些问题。
如果您的Android控制台日志显示“未知错误铬:0”,很可能是你需要细化的config.xml您的访问权限。 我固定我的问题,并将其描述在这里 。
快速而肮脏的解决方案。 使用可以使用光隐藏的iframe这样;
<iframe src="http://www.yourwebsite.com/userControls/GoogleAnalytics.html?param=extraParamHere" style="visibility: hidden"></iframe>
每次你在PhoneGap的应用程序请求页面时,重新加载这个iframe来初始化轨道。
您可以使用GALocalstorage
库,并能正常工作在移动设备上
这很容易设置
<script type="text/javascript" src="js/libs/GALocalStorage.js"></script>
<script>
ga_storage._setAccount('UA-37167XXX-1'); //Replace with your own
ga_storage._trackPageview('/index.html');
</script>
就是它,无需修改或其他任何东西。
您需要创建
Website Account
在Google analytics
使用这个库
GitHub上的图书馆
注:移动平台产生的谷歌Analytics客户Traking ID唯一,如果你想跟踪你的谷歌分析,要确认你已经创建它的网站支持IOS和Android.So。 只有跟踪ID,网站工作与手机的差距所有平台的应用程序。 然后,您可以简单地从下面的链接下载GALocalStorage,然后把它放在你的js文件夹中的WWW文件夹下
www
|__
js
|__
GALocalStorage.js
然后写入以下代码的<head>标签之下,并且开始显示仪表盘实时活动用户。
https://github.com/ggendre/GALocalStorage
<script>
ga_storage._setAccount('UA-XXXXXXXX-X'); //Replace with your own
ga_storage._trackPageview('Home Screen');
</script>