1

我有一个用 Phonegap 和 jQueryMobile 构建的 HTML5 应用程序,我正在为 Android 测试它。我想加入 Analytics,但我采用的每一种方法都会遇到障碍。

这个解决方案真的让我很兴奋:只需包含一个 JS 文件,在 html 中初始化 Analytics,我就准备好了。它看起来非常有前途。它在浏览器中工作。但不是在我运行 Android 4.1.2 的 Nexus S 上。

我把这个脚本放在文件头的末尾:

<script type="text/javascript" src="GALocalStorage.js"></script>
<script>
    ga_storage._setAccount('UA-XXXXXXXX-1');  
    ga_storage._trackPageview('/index.html');
    ga_storage._trackEvent('Startup','Starting scripts all loaded')
</script>

在应用程序启动的早期,我得到了这些令人鼓舞的调试迹象:

09-05 21:47:49.558: V/GAV3(22963): Thread[GAThread,5,main]: connecting to Analytics service
09-05 21:47:49.609: V/GAV3(22963): Thread[GAThread,5,main]: connect: bindService returned true for Intent { act=com.google.android.gms.analytics.service.START (has extras) }
09-05 21:47:49.656: V/GAV3(22963): Thread[GAThread,5,main]: Loaded clientId
...
09-05 21:47:49.660: I/GAV3(22963): Thread[GAThread,5,main]: No campaign data found.
09-05 21:47:49.664: V/GAV3(22963): Thread[GAThread,5,main]: putHit called

不久之后出现了一些“Unknown Chromium error: 0”。当我将 GALocalStorage 设置为调试模式时,我发现这几乎总是在“跟踪事件”之后。

然后,很久以后,这些行出现了:

09-05 21:47:52.558: V/GAV3(22963): Thread[Failed Connect,5,main]: falling back to local store
09-05 21:47:52.609: V/GAV3(22963): Thread[GAThread,5,main]: Sending hit to store  PATH: https:  PARAMS: v=1,  ul=nl-nl,  t=appview,  ht=1378410463883,  sr=480x800,  an=True-Budget,  tid=UA-XXXXXXX-1,  aid=com.mappingtheforest.truebudget,  cid=c1c63a4d-0dfd-48fb-9e8a-1371e06d28b4,  av=1.0.0,  _u=.KnL,  
09-05 21:47:52.777: V/GAV3(22963): Thread[GAThread,5,main]: PowerSaveMode initiated.
09-05 21:47:52.937: V/GAV3(22963): Thread[GAThread,5,main]: PowerSaveMode terminated.
09-05 21:47:52.937: V/GAV3(22963): Thread[GAThread,5,main]: Dispatch running...
09-05 21:47:52.976: V/GAV3(22963): Thread[GAThread,5,main]: User-Agent: GoogleAnalytics/3.0 (Linux; U; Android 4.1.2; nl-nl; Nexus S Build/JZO54K)
09-05 21:47:52.976: V/GAV3(22963): Host: ssl.google-analytics.com
09-05 21:47:52.976: V/GAV3(22963): GET /collect?v=1&ul=nl-nl&t=appview&ht=1378410463883&sr=480x800&an=True-Budget&tid=UA-XXXXXXXX-1&aid=com.mappingtheforest.truebudget&cid=c1c63a4d-0dfd-48fb-9e8a-1371e06d28b4&av=1.0.0&_u=.KnL&_v=ma3.0.0&qt=9079&z=1 HTTP/1.1

我已经确保 google-analytics.com 域在 Phonegap 的 config.xml 文件中被列入白名单。

这是怎么回事?

4

2 回答 2

6

现在你会想使用:

<access origin="*://*.google-analytics.com/*" subdomains="true" />

于 2014-10-27T04:31:57.243 回答
3

好的,以上设置中关于 Android 4.1 不支持 Google Analytics 的警告是错误的!

问题在于域白名单,它需要非常精确才能正常工作。

在 config.xml 中,确保存在以下权限:

<access origin="http://*.google-analytics.com"/>
<access origin="https://*.google-analytics.com"/>

教训:您需要对 http 和 https 拥有单独的权限。在这两种情况下,您都需要使用星号来允许 Google Analytics 调用它需要的任何子域。这消除了“未知 Chromium 错误:0”问题,这是请求被阻止的信号。

于 2013-09-13T08:52:32.363 回答