【问题标题】:Using google analytics with hybrid mobile app将谷歌分析与混合移动应用程序结合使用
【发布时间】:2013-02-25 19:12:32
【问题描述】:

我们正在将我们的原生 iPad 应用程序转变为混合应用程序。一些功能和 UI 将保留在本机代码中,而其他功能将在 HTML 中实现,这些功能将从我们的服务器提供,也可以离线使用。

我现在遇到的主要问题是使用 Google Analytics:
现有的本机代码使用适用于 IOS 的 GA SDK,我计划将 Web API 用于 Web 部件,但是我无法找到如何在 GA 中一起使用来自两个通道的数据,因为数据存储似乎不同。

此外,我计划使用 Google Analytics 的 Content Experiments 对 Web 部件进行 A/B 测试,但转换目标可能是在本机部件中实现的。

任何人都有混合应用或替代解决方案分析方面的经验。

谢谢

【问题讨论】:

    标签: ios objective-c google-analytics ab-testing hybrid-mobile-app


    【解决方案1】:

    您确实想使用 SDK。它有一些对移动应用程序来说很方便的功能,比如崩溃、游戏商店集成。它还可以批量发送数据以提高电池使用率,还可以在应用程序离线时将点击排队等待在线时发送。您将无法使用 Javascript 实现来模拟它。

    因此,您需要编写 Javascript 方法,将数据从 WebView 发送回 App 的 Native 部分。 This other Stack Overflow thread 有更多关于如何做到这一点的细节。

    因此,用于跟踪 Google Analytics(分析)交互的 javascript 可能看起来像这样。

    var _gaq = {};
    _gaq.push = function(arr){
      var i, hit;
      hit = arr.slice(1).join('&');
      location.href = 'analytics://'+arr[0]+'?'+arr;
    };
    

    现在这将作为您的 ga.js 文件的替代品,您仍然可以在您的 Web 应用程序上使用与今天在 _gaq 上使用的 API 相同的 API,并且上面的适配器会将其数据发送到 APP 的本机部分.然后您只需要编写将拦截该 HTTP 请求并使用本机 SDK 发出 Google Analytics 函数的本机部分。

    一个普通的_gaq.push(['_trackPageview', '/homepage']);会变成一个类似analytics://_trackPageview?/homepage的uri,现在你只需要在Native部分拦截和解析它。

    - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
        NSURL *url = [request URL];
    
        NSLog(@"Hit detected %@", url.absoluteString);
    
        if ([[url scheme] isEqualToString:@"analytics"]) {
            id<GAITracker> tracker = [[GAI sharedInstance] defaultTracker];
    
            if ([url.host isEqualToString:@"_trackPageview"]) {
                // Get the page from parameters and then track the native View.
                // (...)
                [tracker trackView:page];
            }
            else if ([url.host isEqualToString:@"_trackEvent"]) {
                // Get the event parameters from url parameters and then track the native GA Event.
                // (...)
                [tracker trackEventWithCategory:cat
                                     withAction:act
                                      withLabel:lab
                                      withValue:val];
            }
            // Check for all other analytics functions types
            // (...)
            // Cancel the request
            return NO;
        }
        // Not an analytics: request.
        return YES;
    }
    

    我希望它为您提供了一个良好的起点。祝你好运。

    【讨论】:

      【解决方案2】:

      确实是一个具有挑战性的配置。

      您是否考虑过将 analytics.js(通用分析)用于 Web 部件?然后您也许能够将数据输入到单个应用配置文件中

      否则,您可以通过使用 Measurement Protocol 的服务器端实现从后端发送所有跟踪调用,但您可能会失去对 Content Experiment 的使用!

      【讨论】:

      • 我没想到这是一个具有挑战性的配置,因为混合应用程序是许多人的方向,但事实证明它确实具有挑战性。
      【解决方案3】:

      我将http://www.flurry.com/ 用于我的应用程序,将 Google Analytics 用于我的其他内容。我从来没有在同一个应用程序中混合它们,但我猜这是可行的。我建议先检查一下flurry。对于混合应用程序来说,它很有可能就足够了。

      【讨论】:

      • 你在混合应用中使用过flurry吗?我还没有看到任何库支持,也许我需要更加努力\
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      相关资源
      最近更新 更多