如何使用PhoneGap的与谷歌Analytics(分析)无需插件?如何使用PhoneGap的与谷歌

2019-06-01 02:02发布

我想提出一个应用程序,我想从用户的分析。 我试图用PhoneGap的插件,但我没有任何运气努力实现它。

我想知道是否有可能通过处理像一个正常的网页应用程序,并把一些JavaScript在我的网页的头部,以获得谷歌Analytics(分析)。

有一个更好的方法吗? 并且是PhoneGap的谷歌分析比我试图做的好得多?

Answer 1:

[编辑]谷歌Analytics(分析)现在可以与混合动力应用的localStorage。

谷歌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的伟大,我会很快测试更多的设备。 希望这可以帮助 ! :)



Answer 2:

看看录像,看看它在行动:

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想从所有操作系统的获取数据。



Answer 3:

这是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类型。 默认情况下(不带过滤器),它会显示所有数据。

补充说明

  • 现在一切通过HTTPS,无需http协议不再在你的<access>和CSP
  • 要知道,写*.google-analytics.com在CSP是行不通的。 虽然该政策在Chrome的工作(56),它并没有在科尔多瓦(5.6.0)
  • 谷歌分析不需要任何应用程序的权限一样ACCESS_NETWORK_STATE或ACCESS_WIFI_STATE就像我在其他地方阅读
  • 所有这一切都与一个Android应用程序(我期望它的工作在iOS应用以及)测试,并安装插件的人行横道


Answer 4:

我是用离子应用(基于科尔多瓦)的移动网站和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的事件。 希望它可以帮助你。



Answer 5:

没有为我工作。 这个问题,谷歌代码使用cookie,它不与文件工作://网址。

我发现,使用localStorage的替代饼干良好的执行: https://developers.pokki.com/docs/tutorials.php



Answer 6:

我已经实现了segment.io - 在HTML5 /流星应用analytics.js库。

我在PhoneGap的(3.1)没有任何分析工具插件。 立即适用于iOS的工作。

实施后,从Android应用分析没有显示约4小时。 然后,它开始不改变的PhoneGap或流星设置工作。

希望这可以帮助别人避免寻找一个神秘的错误了几个小时。

注意:确保正确的访问原点设置如增加



Answer 7:

这PhoneGap的插件将有助于整合PhoneGap的应用程序的谷歌分析。 阅读这篇博客 ,了解更多如何整合谷歌分析中的PhoneGap。 您也可以从下载工作演示代码在这里 。



Answer 8:

对于运行与纪尧姆Gendre的在Android 4.1或其他特定平台很好的解决方案问题的人,这可能会解决这些问题。

如果您的Android控制台日志显示“未知错误铬:0”,很可能是你需要细化的config.xml您的访问权限。 我固定我的问题,并将其描述在这里 。



Answer 9:

快速而肮脏的解决方案。 使用可以使用光隐藏的iframe这样;

<iframe src="http://www.yourwebsite.com/userControls/GoogleAnalytics.html?param=extraParamHere" style="visibility: hidden"></iframe>

每次你在PhoneGap的应用程序请求页面时,重新加载这个iframe来初始化轨道。



Answer 10:

您可以使用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 AccountGoogle analytics使用这个库

GitHub上的图书馆



Answer 11:

注:移动平台产生的谷歌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>


文章来源: How to use Google Analytics with Phonegap without a plugin?