【问题标题】:Step by step to get Google Analytics working in PhoneGap 1.2.0 on iOS (phonegapalytics)逐步让 Google Analytics 在 iOS 上的 PhoneGap 1.2.0 中工作(phonegapalytics)
【发布时间】:2011-11-11 16:30:53
【问题描述】:

如何在 iOS 的 PhoneGap 1.2.0 中安装 Google Analytics?

【问题讨论】:

    标签: ios cordova google-analytics


    【解决方案1】:

    首先,我必须非常感谢 here. 的家伙,他们的博客提供了巨大的帮助,但我仍然需要做更多的事情才能最终让它发挥作用。

    我将逐步完成它,以便您可以让它在非常基本的水平上工作,然后您可以从那里开始。我发现即使是最轻微的错误也会把事情搞砸。

    我假设你已经安装了 PhoneGap 1.2.0 并且正在使用 Xcode 4.2


    第一部分

    让一个基本的 PhoneGap 应用程序正常工作。关注PhoneGap guide 并开始工作。


    第二部分

    下载 PhoneGap 谷歌分析插件。 我发现最简单的方法就是从here. 下载 zip 文件,你会得到一堆你不需要的东西,但没关系。

    在您的下载目录中展开文件。进入展开的目录.. 进入 iPhone 文件夹,您应该会看到 GoogleAnalytics 文件夹。

    在 Xcode 中,右键单击项目(顶部的蓝色块)并选择“将文件添加到”。导航到展开的文件夹。点击“GoogleAnalytics”文件夹。确保选择了“将文件复制到目标组的文件夹(如有必要)”并将其添加到目标。点击“添加”。将Xcode中的文件夹中的文件拖到Plugins文件夹中。

    返回 Finder 并打开项目目录。将 GoogleAnalyticsPlugin.js 从 GoogleAnalytics 文件夹复制到“www”文件夹。 Xcode 会给出一个关于重新保存文件的警告。只需点击关闭。

    转到 index.html 文件。在function onDeviceReady() 中,将以下行添加到函数的开头。

    window.plugins.googleAnalyticsPlugin.startTrackerWithAccountID("YOUR UA CODE");

    接下来在onDeviceReady函数下添加以下函数(在同一个脚本块内)

    function trackpage(id)
    {
        console.log("start trackpage: " + id);
        window.plugins.googleAnalyticsPlugin.trackPageview(id);
        console.log("end trackpage: " + id);
    }
    

    现在,仍然在 index.html 文件中,找到该行

    <li>Check your console log for any white-list rejection errors.</li>
    

    (记住这是 phonegap 1.2.0)

    在其后添加以下行。

    <li class="arrow"><a href="javascript:trackpage('/TEST');">test analytics</a></li>
    

    这提供了一个链接,您可以在测试应用程序中单击。

    注意。您必须在您正在跟踪的页面中使用正斜杠 (/)。所以javascript:trackpage('/TEST') 会起作用,而javascript:trackpage('TEST') 不会。

    最后,还是在 index.html 中添加下面这行

    <script type="text/javascript" charset="utf-8" src="GoogleAnalyticsPlugin.js"></script> 
    

    下面

    <script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script>
    

    暂时不要尝试运行它。它不会工作。


    C部分

    接下来转到GoogleAnalytics.h 文件。擦吧..这里有一堆问题。 JSON 似乎现在是 JSONKit 而 PhoneGapCommand 现在是 PGPlugin.. 只需将其粘贴进去即可。PhoneGap 文档似乎到处都是。

    #import <Foundation/Foundation.h>
    
    #ifdef PHONEGAP_FRAMEWORK
    #import <PhoneGap/PGPlugin.h>
    #import <PhoneGap/NSData+Base64.h>
    #import <PhoneGap/JSONKit.h> 
    #else
    #import "PGPlugin.h"
    #import "NSData+Base64.h"
    #import "JSONKit.h" 
    #endif
    
    #import "GANTracker.h"
    
    @interface GoogleAnalyticsPlugin : PGPlugin<GANTrackerDelegate> {
    
    }
    
    - (void) startTrackerWithAccountID:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
    - (void) trackEvent:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
    - (void) trackPageview:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
    
    @end
    

    D部分

    接下来将 Google Analytics 部分添加到项目中。这是 Google 提供的部分,但它方便地包含在 phonegap ios GoogleAnalytics/GoogSDK 插件文件夹中。

    在 Xcode 中,转到 GoogleAnalytics/GoogSDK 文件夹并将 GANTracker.hlibGoogleAnalytics.a 文件拖到 Plugins 目录中。

    基本上,您需要将它们从“蓝色”GoogleAnalytics/GoogSDK 文件夹复制到“黄色”文件夹中,以便可以通过头文件找到它们。


    E部分

    接下来我们需要将 sqlite(Google Analytics 在不在线时存储数据的地方)和 CFNetwork(以便 Google Analytics 可以上传数据)添加到项目中。

    在 Xcode 中单击项目(文件顶部的蓝色部分)。单击主要目标。然后单击构建阶段。列表中的第三项是“Link Binary with Libraries”。请注意,其中有两个.. 选择最上面的一个。打开它并单击+号。添加libsqlite3.0.dylib,然后添加CFNetwork.framework


    F部分

    最后(几乎完成了)我们需要设置插件。转到PhoneGap.plist 文件。在 Plugins 下添加另一个条目,键为 googleAnalyticsPlugin(javascript 名称),值为 GoogleAnalyticsPlugin(Obj-C 部分)。

    在 ExternalHosts 下添加 * 条目

    现在尝试运行。手指交叉它会起作用。

    测试它以运行程序然后使用新的 Google Analytics Real Time (BETA) 模式的最佳方法,因为您可以看到正在实时跟踪的页面。

    您需要更改为新版本的 Google Analytics(分析)(它应该是顶部的明显链接以移动到新版本)。打开 GA 帐户,转到 Home..REAL_TIME... 概览。 您应该会在几秒钟内看到 TEST 页面跟踪。

    注意:您无法实时跟踪事件。您需要等待它们被处理。

    问题

    我在查看编译源代码将二进制文件与库链接时遇到了一些问题。 GoogleAnalytics 部分将显示为红色。如果它们是红色的,则意味着您的项目找不到它们,我认为您如何解决这个问题取决于您的 Xcode 版本,因此您可能需要谷歌一下来解决这个问题。我所做的是删除 GoogleAnalytics(按 - 号)然后将文件拖入。如果它显示为“正确的图标”(而不是红色框),它应该可以工作。

    也在 Android 上做吗?

    我假设如果您使用的是 Phonegap,那么您可能也在使用 Android 版本。如果是这种情况,您可能需要查看this comparison Q+A 了解差异。

    【讨论】:

    • 哇,就像一本书。干得好:)
    • 谢谢。这是大约一周令人沮丧的黑客攻击的结果。希望它能帮助其他人避免浪费大量时间。
    • @Tim 非常感谢你,我也在找这个。顺便说一句,对于主机,不需要 ExternalHosts 是 *.您可以设置发送请求的域 google-analytics.com。
    • 不客气。是的,我知道外部主机。我只是将其设置为 *,因此将其作为故障点的可能性较小。
    • 写得好!这真的帮助了我。我遇到了一个问题,找不到 GoogleAnalyticsPlugin,我不得不返回并将文件添加为一个组而不是参考。希望对某人有所帮助。
    【解决方案2】:

    非常感谢您的出色工作,我唯一的困惑是这个块:

    function trackpage(id)
    {
        console.log("start trackpage: " + id);
        window.plugins.googleAnalyticsPlugin.trackPageview(id);
        console.log("end trackpage: " + id);
    }
    

    必须将它放在 onready 函数之外才能在我的应用程序中工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 2013-11-09
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多