Cordova 如何使用谷歌分析与Phonegap没有插件?
我正在制作一个应用程序,我想从用户那里得到分析。我试图使用Phonegap插件,但我没有任何运气尝试实现它 我想知道是否有可能通过像对待普通网页一样对待应用程序并在我的页面头部添加一些javascript来获得谷歌分析Cordova 如何使用谷歌分析与Phonegap没有插件?,cordova,google-analytics,phonegap-plugins,Cordova,Google Analytics,Phonegap Plugins,我正在制作一个应用程序,我想从用户那里得到分析。我试图使用Phonegap插件,但我没有任何运气尝试实现它 我想知道是否有可能通过像对待普通网页一样对待应用程序并在我的页面头部添加一些javascript来获得谷歌分析 有更好的方法吗?Phonegap Google Analytics是否比我正在尝试做的要好得多?请查看视频,看看它的实际效果: 经过研究,我找到了一个解决办法。我在Phonegap Google Group上遇到了这样一个帖子: (谢谢TimW和Dan Levine!) 在这个
有更好的方法吗?Phonegap Google Analytics是否比我正在尝试做的要好得多?请查看视频,看看它的实际效果: 经过研究,我找到了一个解决办法。我在Phonegap Google Group上遇到了这样一个帖子: (谢谢TimW和Dan Levine!) 在这个帖子中,我发现不用插件就可以使用谷歌分析。您只需从Google下载ga.js文件(只需将页面保存到您的www文件夹中) 然后通过添加一个字符来修改ga.js文件。在ga.js文件中搜索单词“file:”并将其替换为“\u file:” 在我上面链接的线程中,“TimW”解释了原因: 从本质上讲,如果谷歌的分析是从一个网站上使用的,那么它将无法工作 文件:///url。在iOS/PhoneGap中就是这种情况。为了解决这个问题, 问题:您必须首先从google下载ga.js文件并包括 它是本地构建的一部分。您会注意到此文件的 模糊的。在文件中搜索应出现的字符串“file:” 只有一次。找到后,在开头添加下划线(以便 变成“\u文件:”)。这会阻止它与页面的协议匹配 位置(即“文件:”) 将一个字符添加到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>
var _gaq=_gaq | |[];
_gaq.push([“设置帐户”,“UA-此处为您的ID”);
_gaq.push([''u setDomainName','none']);
_gaq.push([''跟踪页面视图','页面名称']);
我在模拟器上进行了测试,通过谷歌分析的实时视图,我得到了一个证明。模拟器在iOS 5.0上运行。我的手机仍然在iOS 4.2上,当我在我的设备上测试它时,它没有显示在实时跟踪上
在帖子中,有人提到了Android 4.0+的同样问题。。。希望将来会有更好的解决方案,但就目前而言,这是为我的应用程序获取基本分析的最简单、最简单的方法。它不能进行离线跟踪,但无论如何这有点令人毛骨悚然
尽管iOS 4和Android用户在市场上占少数(见饼图):
我仍然希望从所有操作系统获取数据。对我来说不起作用。谷歌代码使用cookies,但无法处理文件://URL的问题 我发现使用localStorage代替Cookie是一个很好的实现: [edit]谷歌分析现在可以在混合应用程序中使用本地存储。 Google Analytics现在有了一个使用LocalStorage而不是Cookie的方法,而且还有一个使其在WebView中工作的方法(
file://
URL)。因此,您不必使用我之前建议的代码,只需执行以下操作:
// 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项目:
在安卓4.1和ios6上运行良好,我很快会测试更多的设备。希望这有帮助!:) 对于任何在安卓4.1或其他特定平台上遇到Guillaume Gendre伟大解决方案问题的人来说,这可能会解决问题
如果Android控制台日志显示“未知错误:0”,则可能需要在config.xml中优化访问权限。我修复了我的问题并对其进行了描述。我已经在HTML5/meteor应用程序中实现了segment.io-analytics.js库 我在phonegap(3.1)中没有分析插件。 立即为iOS工作 实施后,Android应用程序的分析在大约4小时内没有显示。然后,它开始工作,没有更改phonegap或meteor设置 希望这能帮助人们避免几个小时寻找神秘的bug 注意:确保设置了正确的访问原点,例如。 添加快速脏溶液。 使用可以使用像这样的灯光隐藏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>
ga_存储。_设置帐户('UA-37167XXX-1')//换成你自己的
ga_存储。_trackPageview('/index.html');
就是这样,没有任何修改或其他
您需要在谷歌分析
中创建网站帐户
,才能使用此库
这将有助于将谷歌分析集成到phonegap应用程序中。
了解更多如何在phonegap中集成谷歌分析。您还可以从下载工作演示代码 注意:为移动平台生成的Google Analytics客户端跟踪ID仅支持IOS和Android。所以,如果您想跟踪您的Google Analytics,请确保您已经为网站创建了它。 只有网站的跟踪ID才能与所有平台应用程序配合使用。 然后,您只需从下面的链接下载GALocalStorage,然后将其放在您的js文件夹www文件夹下
www
|__
js
|__
GALocalStorage.js
然后在标记下编写以下代码,并开始在仪表板中显示实时活动用户
ga_存储。_设置帐户('UA-XXXXXXXX-X')//换成你自己的
ga_存储。_trackPageview(“主屏幕”);
我在使用Ionic应用程序(基于cordova)作为一个移动网站,GA正在为此而努力。当我将相同的应用程序发送到本机ios时,它停止工作
第1期。在检查模拟器日志时,发现GA未加载
<script>
ga_storage._setAccount('UA-XXXXXXXX-X'); //Replace with your own
ga_storage._trackPageview('Home Screen');
</script>
(window,document,'script','//www.google-analytics.com/analytics.js','ga')
ga('set', 'checkProtocolTask', null);
const gaScript = document.createElement('script');
gaScript.src = "https://www.google-analytics.com/analytics.js";
gaScript.type = "text/javascript";
document.getElementsByTagName('head')[0].appendChild(gaScript);
gaScript.onload = (ev: Event) => {
const GA_LOCAL_STORAGE_KEY = 'ga:clientId';
window['ga']('create', 'XXXX-XXXXX', {
'storage': 'none',
'clientId': localStorage.getItem(GA_LOCAL_STORAGE_KEY)
});
window['ga'](function(tracker) {
localStorage.setItem(GA_LOCAL_STORAGE_KEY, tracker.get('clientId'));
});
// THIS IS FOR FILE URL SUPPORT
window['ga']('set', 'checkProtocolTask', function(){ /* noop */});
console.log('GA OK!')
}
// if we are in the app (the protocol will be file://)
if(document.URL.indexOf('http://') !== 0){
if(document.URL.indexOf('http') !== 0){
ga('send', 'event', '<myAppName>', '<eventName>');